OS5 – Gestion des droits sur les fichiers Linux

 

display:condition;

Table des matières

Les droits « historiques » UNIX

Les trois catégories d'utilisateurs

Les trois types d'attributs possibles

Visualisation des droits

Modification des droits

Modification de propriété

Restriction des droits à la création

Les bits « spéciaux »

Bits SUID et SGID

Le « sticky bit »

Positionnement des bits spéciaux en octal

Affichage des bits spéciaux

Les « Access Control Lists » - ACL

Exercices d’entraînement

QUIZZ

 

Les droits « historiques » UNIX

Les trois catégories d'utilisateurs

Les droits attribués à un utilisateur sur un fichier ou un sous-répertoire sont différenciés suivant que l'utilisateur :

A chaque fichier ou sous-répertoire on associe donc trois jeux de droits (1 jeu par type d'utilisateur : u g et o.).

Les trois types d'attributs possibles

Pour chaque type d’utilisateur ( user, group, other ) trois attributs d’accès à une ressource sont définis :

L’absence d’un droit est définie par le caractère tiret « - ».

La combinaison des trois types d’utilisateurs et des 3 attributs possibles pour chaque type d’utilisateur aboutit à l’attribution de 9 droits à chaque ressource ; ces droits se présentent alors sous la forme d’une série de 9 caractères.

Par exemple un fichier modifiable et exécutable par son propriétaire et seulement lisible par les autres types d’utilisateurs possèdera les droits suivants : rw-r--r--

Le tableau suivant détaille l’effet de chaque droit en fonction du type de ressource :

Attribut

Effet sur un fichier

Effet sur un dossier

Lecture

Lecture des données du fichier

Listage des fichiers et . contenus dans le dossier

Ecriture

  • Ecriture de données dans le fichier en ajout ou en écrasement 

  • Effacement du fichier autorisé 

Création et destruction de fichiers ou de dossiers. autorisés dans le dossier.

Exécution

Exécution du fichier :

  • directement par le S.E. sous forme de processus si le fichier est de type binaire 

  • par l'interpréteur de commande (le shell) si le fichier est un script (de type texte) 

Positionnement dans le dossier. ou parcours du dossiera autorisé.

Si non accordé, interdit tout accès à un fichier ou positionnement dans un dossier situé dans le dossier ou à un niveau inférieur.

Visualisation des droits

Pour visualiser les droits d’une ressource, il faut utiliser la commande « ls » de la manière suivante : ls -l fichier ou ls -l dossier

Exemple 1 : ls -l /var affiche les droits étendus sur le sous-répertoire « /var »

Exemple 2 : ls -l /etc/group affiche les droits étendus sur le fichier « /etc/group »

 

L'affichage des droits est effectué sous la forme de trois triplets de caractères indiquant les attributs (dans l'ordre : r w x)  précédés d'un caractère indiquant le type du fichier :

Chaque triplet correspondant à un type d’utilisateur, les triplets sont affichés dans l'ordre (u g o)

Un attribut non accordé est signalé par le caractère « - » à la place correspondante.

Modification des droits

Une modification des droits s’effectue A l'aide de la commande « chmod» dont la syntaxe d’utilisation est la suivante : chmod mode ressource  

L'argument mode peut comporter plusieurs blocs séparés par des virgules. Chaque bloc indique :

Les catégories peuvent être associées ; par exemple pour modifier les droits du propriétaire et du groupe propriétaire on spécifie « ug »

Les attributs peuvent être associés ; par exemple pour agir simultanément (en ajout ou en retrait) sur la lecture et l'écriture on spécifie « rw »

Note : seuls le propriétaire et l'administrateur du système (le root) sont autorisés à modifier les droits sur un fichier (ou une ressource quelconque) sous Linux.

Exemple 1 : Ajouter les attributs lecture et écriture et retirer l'attribut d'exécution au fichier « \tmp\toto.txt » pour le propriétaire et son groupe : chmod ug+rw-x \tmp\toto.txt

Exemple 2 : Ajouter les attributs lecture, écriture et exécution au propriétaire, lecture et exécution au groupe et exécution seule aux autres au fichier « \tmp\titi.txt » pour le propriétaire et son groupe : chmod u=rwx,g=rx,o=x \tmp\titi.txt

On peut également utiliser chmod en spécifiant les droits directement en octal ; pour l’exemple 2 ci-dessus la commande utilisée est alors : chmod 761 \tmp\titi.txt

Modification de propriété

Pour changer le  propriétaire d’une ressource, il faut utiliser la commande « chown » de la manière suivante : chown nouveau_proprio fichier

ExempleDonner le fichier « toto.txt » à l'utilisateur « riri » : chown riri toto.txt  

Pour changer le groupe propriétaire d’une ressource on utilise la commande « chgrp » de la manière suivante : chgrp nouveau_gp_proprio fichier  

ExempleDonner le fichier « toto.txt » au groupe d'utilisateurs « users » : chgrp riri toto.txt  

Note : pour des raisons de sécurité, seul l'administrateur du système (le root) est autorisé à modifier le propriétaire d'une ressource quelconque sous Linux.

Restriction des droits à la création

Lorsqu’un utilisateur ou un processus lancé par un utilisateur crée un fichier (ou n’importe quel objet sur le système de fichiers), ce fichier possède un jeu de droits prédéfinis.

Il est possible de restreindre ce jeu par défaut en utilisant la commande umask accompagnée d’un nombre octal qui précise les droits à enlever.

Exemple : la commande « umask 066 » exécutée dans un shell supprimera automatiquement les droits « r » et « w » pour le groupe propriétaire et les autres de tout nouveau fichier (ou dossier» créé par la suite dans le shell.

Les bits « spéciaux »

Bits SUID et SGID

Quand un programme exécutable est lancé par un utilisateur, il « hérite » des droits de cet utilisateur.

Exemple : si l’utilisateur « fifi » ne peut pas lire le fichier « silo.txt » et qu’il lance un programme exécutable (nommé par exemple « lecture ») qui cherche à lire ce fichier, l’opération échouera en raison des restrictions des droits de « fifi ».

Supposons à présent que le propriétaire effectif de « lecture », lui, ait le droit de lire « silo.txt », il suffirait alors de « concéder » aux utilisateurs qui lancent ce programme les droits du propriétaire effectif du programme « lecture ».

Cette possibilité est fournie par le propriétaire du programme s’il définit le SUID bit sur ce programme en utilisant la commande suivante :

chmod u+s lecture

La même opération peut être réalisée en donnant les droits d’un groupe propriétaire en utilisant la commande (SGID bit) :

chmod g+s lecture

Note : l’application des « SUID bit » et « SGID » bit n’a d’intérêt que pour un fichier et peut être nuisible pour un sous-répertoire (cf. section « Affichage des bits spéciaux » page 5)

Le « sticky bit »

Ce bit nuance le droit « écriture » accordé aux différentes catégories d’utilisateurs sur une ressource.

Pour un dossier il permet d’interdire l’effacement ou la création de fichiers dans le sous-répertoire, par contre ceux-ci sont toujours modifiables.

Pour un fichier exécutable ce bit provoque la conservation en mémoire du processus correspondant à l’exécution de ce fichier quand celui-ci termine son exécution.

La commande permettant d’appliquer ce bit à une ressource (fichier ou sous-répertoire) est la suivante : chmod +t ressource

Exemple : soit le sous-répertoire nommé « partage » dont les droits sont les suivants : rwxr-x--x .
Après application du « sticky bit » à ce sous-répertoire les droits affichés seront : rwxr-x--t

Note : si le droit « x » n’est pas attribué aux « autres » soit les droits suivants : rwxr-x--- . Après application du « sticky bit » à ce sous-répertoire les droits affichés seront : rwxr-x--T

Positionnement des bits spéciaux en octal

La définition des droits en octal par chmod s’effectue en ajoutant un digit octal devant les 3 digits habituels servant à définir les droits « standards ».

Ce digit est codé de la manière suivante :

Exemple : considérons le dossier « partage » dont les droits sont les suivants :
rwxrw-rw- ces droits traduits en octal donne le nombre suivant : 0766
Appliquons maintenant le SUID bit à ce dossier : chmod 04766  
Puis le SGID bit en conservant le SUID bit :
chmod 06766  
Enfin le sticky bit en conservant le SUID bit et le SGID bit :
chmod 07766
Pour effacer les bits SUID, SGID et sticky :
chmod 00766

Affichage des bits spéciaux

Soit un fichier ou un sous-répertoire pour lequel aucun des bits spéciaux n’est défini au préalable. On suppose que les droits qui lui sont appliqués sont les suivants : rwxrwxr-x

Si on lui applique le SUID bit, les droits deviennent : drwsrwxr-x  le droit « x » du propriétaire est alors remplacé par le SUID bit (« s »).

Si on lui applique le SGID bit, ils deviennent : rwsrwsr-x  le droit « s » du groupe propriétaire est alors remplacé par le SGID bit (« s »).

Si on lui applique le sticky bit, ils deviennent : rwsrwsr-t  le droit « x » des « autres » est alors remplacé par le sticky bit (« t »).

Note : si les droits de départ avait été drwxrwxr-- , après l’application du sticky bit les droits seraient apparus avec un un « T » au lieu d’un « t » : drwsrwsr-T

Attention l’affichage des droits peut faire apparaître les lettres majuscules « S » et « T » dans les cas suivants :

  1. 1.si au départ le droit « x » n’est pas attribué aux « autres » :après l’application du « sticky bit » les droits affichés seront : rwsrwsr-T   

  2. 2.de même si au départ le droit « x » n’est pas attribué au propriétaire et au groupe propriétaire : après l’application du « SUID bit » et du « SGID bit » les droits affichés seront : rwSrwSr-x  

Note : l’affichage du « S » pour un sous-répertoire implique que ce sous-répertoire n’est plus « exécutable » c.a.d. qu’on ne peut plus le « traverser » ni s’y positionner. Dans le cas d’un fichier, celui-ci n’est alors exécutable par personne (même pas son propriétaire ou son groupe propriétaire) En clair le fait qu’un « S » apparaisse dans les droits indique très certainement une faute de configuration.

Les « Access Control Lists » - ACL

Permet d'étendre les droits historiques en individualisant les droits d'accès à un fichier (ou sous-répertoire) pour chaque utilisateur.

Exemple – Soit le fichier « toto.txt ». Ce fichier appartient à  l'utilisateur « marc » et le groupe propriétaire du fichier est « user ». Les droits attribués à ce fichier sont les suivants : rwxr—r--.

Les droits « historiques » attribués au fichier ne permettent pas de donner à l'utilisateur « luc » le droit spécifique d'écrire dedans.

Par contre, on peut associer un nouvel « élément ACL » à ce fichier pour donner le droit « w » à « luc » en utilisant la commande suivante : setfacl -m user:luc:rw- toto.txt  

Les commandes permettant d'utiliser les ACL sont les suivantes :

L’attribution de droits étendus par utilisation d’ACL sur une ressource est signalé lors de l’affichage de ceux-ci par l’ajout du caractère « + ».

Par exemple dans le cas précédent l’utilisation de la commande « ls -l toto.txt » provoquera l’affichage des droits de la manière suivante : rwxr—r--+

Exercices d’entraînement

Pour vous entraîner vous pouvez réaliser :

QUIZZ

Une version approchante de ce Quizz est également disponible sur le site « www.evalbox.com ».

Après avoir bien relu votre cours répondez de mémoire aux questions suivantes :

  1. 1.Quelles sont les trois catégories d'utilisateurs d'un fichier (ou d'une ressource quelconque) sous Linux ? Caractérisez-les. 

  2. 2.Quels sont les trois types d'attributs que l'on peut affecter à une ressource quelconque sous Linux ? 

  3. 3.Quelle commande Linux (avec l'option nécessaire) permet de visualiser les droits attribués à une ressource quelconque sous Linux ? 

  4. 4.Quelle commande Linux permet de modifier les droits d'une ressource quelconque ? 

  5. 5.Quels sont les deux utilisateurs autorisés à modifier les droits d'une ressource quelconque sous Linux ? 

  6. 6.Quelle commande Linux permet de modifier le propriétaire d'une ressource quelconque ? 

  7. 7.Quel est le seul utilisateur autorisé à modifier le propriétaire d'une ressource quelconque ?