B. Droits d'accès (60 min)

a) Les droits sous Linux

Un système de protection sur les fichiers permet d'en contrôler l'accès. On va apprendre à utiliser ce système sous Linux, à la fois par l'interface graphique et en ligne de commande, pour découvrir, en fin de séance, comment partager des fichiers de son répertoire personnel avec d'autres utilisateurs.

B1Créez un fichier Test.txt sur votre bureau, faites un clic droit dessus et choisissez Propriétés dans le menu déroulant. Enfin, sélectionnez l'onglet Droits d'accès dans la boîte de dialogue.
Plusieurs informations sur le fichier sont disponibles :

Les groupes : Un utilisateur peut appartenir à un ou plusieurs groupes, par exemple un groupe qui contient seulement l'utilisateur, un groupe qui contient tous les utilisateurs de la même promotion, un groupe qui contient uniquement les utilisateurs pouvant accéder à la carte son des machines...
Le groupe d'un fichier est un des groupe de son propriétaire (par défaut, celui que le propriétaire avait au moment de sa création). On peut toutefois changer le groupe d'un fichier en un autre groupe auquel appartient son propriétaire. Cela sera détaillé dans la partie suivante.

De façon générale, les droits accordés aux utilisateurs sont de trois types :

Pour approfondir : Il existe trois autres types de droits : les droits spéciaux qui permettent, sommairement, deux types de permissions supplémentaires : pouvoir accorder des droits particuliers à un fichier exécutable le temps de son exécution (droits SUID et SGID) et n'autoriser la suppression d'un fichier qu'au propriétaire de celui-ci (droit 'sticky'), alors qu'habituellement ce droit appartient au propriétaire du répertoire contenant le fichier à effacer.

À l'aide de la souris, on peut modifier une partie de ces droits. Un contrôle plus précis peut se faire en mode texte, on le verra dans la partie suivante.

Les 5 questions suivantes sont à faire en changeant les droits du Propriétaire des fichiers et répertoires considérés.

B2Supprimez le droit d'écriture du fichier Test.txt. Ouvrez celui-ci avec un éditeur de texte et essayez d'écrire quelque chose dans le fichier et de sauvegarder.
B3Rétablissez les droits d'écriture de Test.txt et écrivez quelques lignes dans ce fichier. Supprimez ensuite le droit de lecture (Interdit dans le menu déroulant) et essayez d'ouvrir le fichier.

Résultat de ls -l

B4Dans votre répertoire personnel, créez un répertoire Photos, dans ce répertoire, créez un fichier texte Paysage et un sous-répertoire Vacances.

B5Supprimez le droit d'écriture (modifier le contenu) sur le répertoire Photos. Essayez de supprimer le fichier Paysage. Essayez de créer un fichier Montagnes dans le répertoire Photos. Rétablissez le droit d'écriture sur le répertoire Photos.

B6Supprimez le droit de lecture (voir le contenu) du répertoire Photos et essayez d'accéder à son contenu. Rétablissez le droit de lecture ; en cas d'impossibilité, vous pouvez le faire en ligne de commande, comme cela sera expliqué ci-dessous : chmod u+r Photos.

b) Avec la ligne de commande

En utilisant des instructions en ligne de commande, il est possible de gérer plus finement les droits que précédemment. On peut alors utiliser les droits pour sécuriser certaines parties d'un répertoire personnel et en laisser d'autres accessibles aux autres utilisateurs.

Tous les exercices sont à faire en ligne de commande. Si vous ne vous en souvenez plus, regardez dans le TP1 l'utilité des commandes ls, cd et pwd.

B7Ouvrez un terminal et placez-vous dans le répertoire Photos.

Avant de travailler explicitement sur les droits des fichiers, revenons sur l'appartenance aux groupes.

La commande id (pour "identity") vous donne des renseignements sur votre login et le numéro d'utilisateur associé, sur votre groupe et le numéro de groupe associé ainsi que la liste des groupes auxquels vous appartenez (possiblement qu'un seul pour l'instant...) : B8essayez-la !

Un utilisateur appartenant à plusieurs groupes peut changer son groupe courant par la commande chgrp. Les fichiers et répertoires créés par lui appartiendront ensuite à ce nouveau groupe.

Résultat de ls -l

Maintenant, revenons sur les droits.

B9Tapez la commande ls -l. L'option -l donne des informations sur les fichiers listés.

Pour chaque fichier ou répertoire, les dix premiers caractères correspondent aux droits du fichier (voir figure). Plus précisément, le premier caractère correspond au type de fichier (- pour un fichier 'normal', d pour un répertoire, pour les plus courants), les trois suivants correspondent aux droits de l'utilisateur (u sur la figure pour "user"), les trois suivants à ceux du groupe (g pour "group") et les trois derniers à ceux des autres utilisateurs (o pour "other"). Pour chaque type d'utilisateur, les droits sont, dans l'ordre, r ("read") pour la lecture, w ("write") pour l'écriture et x ("execute") pour l'exécution. Si un des droits n'est pas autorisé, un tiret - apparaît à la place de la lettre correspondante.

Pour approfondir : il existe aussi un codage numérique correspondant aux droits sur les fichiers : 1 pour l'exécution, 2 pour l'écriture et 4 pour la lecture. On additionne les valeurs des droits présents pour chaque type d'utilisateurs. Les droits globaux du fichier forment alors un nombre à trois chiffre, le premier pour le propriétaire du fichier, le second pour le groupe et le troisième pour les autres (retenez l'ordre "ugo").
Par exemple, chmod 614 NomDuFichier signifie : accès autorisé en lecture et écriture pour le propriétaire (4+2=6), en exécution pour le groupe (1) et en lecture pour les autres (4).

La commande chmod permet de changer les droits d'un fichier. Elle s'utilise de la façon suivante : chmod UTILISATEURS SIGNE DROITS NomDuFichier, où :

Par exemple, chmod ug+w lulu.txt ajoute sur le fichier lulu.txt les droits d'écriture à l'utilisateur et aux membres du groupe auquel le fichier appartient. Un autre exemple : chmod o=rx lulu.txt fixe les droits de lulu.txt à lecture et exécution (et pas écriture) pour les utilisateurs autres.

B10Ajoutez le droit d'exécution aux utilisateurs "groupe" pour le fichier Paysage et retirez ceux de lecture aux utilisateurs "autres" (pensez à vérifier l'effet de vos commandes en tapant ls -l).

En une seule commande, B11fixez les droits de Paysage et Vacances pour les utilisateurs "autres" à exécution uniquement (pensez aux jokers, vus à la séance précédente).

On va voir maintenant comment donner ou enlever à un répertoire la possibilité d'être traversé, en jouant sur le droit "x" d'un répertoire.

B12Placez-vous dans le répertoire Vacances et tapez la commande touch plage qui permet de créer le fichier (vide) plage. Revenez dans le répertoire Photos.

B13Supprimez le droit d'exécution (pour l'utilisateur, vous) sur le répertoire Vacances.

B14Essayez de vous placer dans ce répertoire. Cela n'est pas possible puisque le droit de traverser ce répertoire a été supprimé. Par contre, il est toujours possible de lire (lister) son contenu : la commande ls Vacances fonctionne.

B15Rétablissez le droit d'exécution sur le répertoire Vacances.

Inversement, on peut garder le droit de traverser un répertoire tout en interdisant sa lecture.

B16Remontez dans votre répertoire personnel, et supprimez (pour l'utilisateur, vous), le droit de lecture du répertoire Photos.
B17Placez-vous dans ce répertoire (ce qui est possible, le droit de le traverser est toujours activé) et essayez de lister son contenu, ce qui ne fonctionne pas.
On peut noter qu'il est toujours possible de se déplacer dans des sous-répertoires du répertoire Photos à condition d'en connaître les emplacements exacts. B18Essayez cd Vacances.
B19Rétablissez le droit de lecture sur le répertoire Photos.


Pour finir, regardons les droits de votre répertoire personnel.

B20Placez-vous dans votre répertoire personnel et remontez d'un cran dans l'arborescence des fichiers par la commande cd .. . Le répertoire où vous vous trouvez contient les répertoires personnels de tous les étudiants, même s'ils ne sont pas tous visibles (essayez ls).

À l'aide de la commande ls -dl suivi de votre login, B21observez les droits de votre répertoire personnel (l'option d de ls permet d'avoir des informations sur un répertoire et non sur son contenu).

Vous remarquez que les autres utilisateurs ne peuvent pas traverser votre répertoire.
Cependant, d'une manière générale, il faut faire attention aux droits que vous donnez à vos fichiers et répertoires.

c) Les droits d'accès sous Windows

Les droits d'accès sont gérés par le système de fichiers qui héberge les fichiers sur le réseau. Il est possible de les changer de façon intuitive avec l'interface graphique en demandant le menu contextuel (clic droit) sur le nom du fichier/dossier concerné. Toutefois, les types de droits que vous pouvez positionner depuis Windows passent au filtre des types de droits que Windows a l'habitude de gérer : il est donc peu conseillé de changer les droits de vos fichiers depuis le système Windows.