[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Ceci est une ancienne révision du document !


Permissions des systèmes de fichiers

Aperçu des permissions

Comme nous l'avons vu, Slackware Linux est un système d'exploitation multi-utilisateurs. De ce fait, les systèmes de fichiers sont également multi-utilisateurs. Cela signifie que chaque fichier ou répertoire dispose de ses propres permissions qui permettent d'attribuer ou refuser des privilèges aux différents utilisateurs. Il y a trois permissions basiques et trois jeux de permissions pour chaque fichier. Jetons un coup d’œil sur un fichier d'exemple.

darkstar:~$ ls -l /bin/ls
-rwxr-xr-x 1 root root 81820 2007-06-08 21:12 /bin/ls

Souvenez-vous, nous avons vu au chapitre 4 que ls -l liste les permissions pour un fichier ou un répertoire ainsi que l'utilisateur et le groupe qui “possède” le fichier. Dans notre cas, les permissions sont rwxr-xr-x, l'utilisateur est root et le groupe est également root. La section pour les permissions, qui est regroupée, est en fait constituée de trois ensembles. Le premier ensemble de trois lettres sont les permissions attribuées pour l'utilisateur qui possède le fichier. Le deuxième ensemble de trois lettres sont celles pour le groupe propriétaire et les trois dernières forment l'ensemble pour les permissions pour tous les autres.

Table 10.1. Permissions de /bin/ls

Ensemble Liste Signification
Propriétaire rwx Le propriétaire “root” peut lire, écrire et exécuter
Groupe r-x Le groupe “root” peut lire et exécuter
Autres r-x Tous les autres peuvent lire et exécuter

Les permissions s'expliquent d'elles-même, au moins pour les fichiers. Lire, écrire et exécuter permettent de lire le fichier, y écrire ou de l'exécuter. Mais que représentent ces permissions pour les répertoires ? En simplifiant, le droit en lecture permet de lister le contenu du répertoire (avec ls par exemple). Le droit en écriture donne la possibilité d'y créer de nouveaux fichiers tout comme de supprimer tout le contenu même si vous ne seriez pas en mesure de supprimer des fichiers à l'intérieur. Le droit en exécution permet de rentrer dans le répertoire proprement dit (avec la commande cd intégrée à bash par exemple).

Regardons les permissions pour un répertoire maintenant.

darkstar:~$ ls -ld /home/alan
drwxr-x--- 60 alan users 3040 2008-06-06 17:14 /home/alan/

Nous voyons ici les permissions pour mon répertoire personnel et ses propriétaires. Le répertoire est détenu par l'utilisateur alan et le groupe users. L'utilisateur dispose de tous les droits (rwx), le groupe ne dispose que des permissions pour lire et exécuter (r-x) et aucune autre personne n'est autorisée à faire quoi que ce soit.

chmod, chown, et chgrp

Maintenant que nous savons à quoi correspondent les permissions, comment les modifier ? Et dans le même registre, comment assigne t-on un utilisateur et un groupe propriétaire ? Les réponses sont dans cette section.

Le premier utilitaire que nous présenterons est la commande chown(1). En utilisant chown, nous pouvons (vous l'aurez deviné), changer le propriétaire d'un fichier ou d'un répertoire. chown est historiquement utilisé uniquement pour le changement de propriétaire, mais peut servir également pour le groupe propriétaire.

darkstar:~# ls -l /tmp/foo
total 0
-rw-r--r-- 1 alan users 0 2008-06-06 22:29 a
-rw-r--r-- 1 alan users 0 2008-06-06 22:29 b
darkstar:~# chown root /tmp/foo/a
darkstar:~# ls -l /tmp/foo
total 0
-rw-r--r-- 1 root users 0 2008-06-06 22:29 a
-rw-r--r-- 1 alan users 0 2008-06-06 22:29 b

En utilisant le caractère deux points après le compte utilisateur, vous pouvez indiquer un nouveau nom de groupe.

darkstar:~# chown root:root /tmp/foo/b
darkstar:~#  ls -l /tmp/foo
total 0
-rw-r--r-- 1 root users 0 2008-06-06 22:29 a
-rw-r--r-- 1 root root  0 2008-06-06 22:29 b

chown peut aussi être utilisé récursivement pour changer les attributions de tous les fichiers et répertoires sous le répertoire cible. La commande suivante changera tous les fichiers dans le répertoire /tmp/foo pour définir les attributions à root:root.

darkstar:~# chown -R root:root /tmp/foo/b

Un caractère deux points suivi d'un nom de groupe, sans nom d'utilisateur, changera simplement le groupe pour le fichier et laissera les droits de l'utilisateur intacts.

darkstar:~# chown :wheel /tmp/foo/a
darkstar:~# ls -l /tmp/foo
ls -l /tmp/foo
total 0
-rw-r--r-- 1 root wheel 0 2008-06-06 22:29 a
-rw-r--r-- 1 root root  0 2008-06-06 22:29 b

La petite soeur de la commande chown est la moins utile chgrp(1). Cette commande se comporte exactement comme chown, excepté qu'elle ne peut modifier que les droits pour un groupe sur un fichier. Dès lors que chown peut déjà faire cela pourquoi s'embêter avec chgrp ? La réponse est simple : beaucoup d'autres systèmes d'exploitation utilisent une version différente de chown qui ne peut pas changer les droits pour les groupes. Donc si d'aventure vous en rencontrez, vous saurez quoi faire.

Il y a une raison pour laquelle nous avons parlé des changements de propriétaire avant les changements de permissions. Ces dernières sont moins facile à appréhender. L'utilitaire pour changer les permissions d'un fichier ou d'un répertoire est chmod(1). Sa syntaxe est très proche de celle de chown, mais plutôt que d'indiquer un utilisateur ou un groupe, l'administrateur doit indiquer soit un ensemble de permissions octales ou un ensemble de permissions alphabétiques. Ni l'une, ni l'autre n'est facile à comprendre du premier coup. Nous commencerrons par les permissions octales qui sont les moins compliquées.

Le nom permissions octales provient du fait qu'elles utilisent huit chiffres, de 0 à 7. Pour chaque permission est défini un chiffre qui est une puissance de deux, et ces chiffres sont additionnés pour obtenir la valeur finale des permissions pour un ensemble. Cela peut paraîre confus, peut-être que le tableau ci-dessous rend les choses plus claires.

Table 10.2. Permissions octales

Permission Signification
Lecture 4
Écriture 2
Exécution 1

En additionant ces valeurs ensembles, vous pouvons obtenir n'importe quelle valeur entre 0 et 7 et définir toutes les combinaisons possibles de permissions. Par exemple, pour donner à la fois les privilèges en lecture et en écriture et interdire celui en exécution nous devons utiliser la valeur 6. Le nombre 3 donnerait les droits en lecture et en exécution mais interdirait de lire le fichier. Nous devons indiquer un nombre pour chacun des trois ensembles lorsque l'on utilise les permissions octales. Il n'est pas possible de ne donner des permissions que pour un utilisateur ou un groupe par exemple.

darkstar:~# ls -l /tmp/foo/a
-rw-r--r-- 1 root root  0 2008-06-06 22:29 a
darkstar:~# chmod 750 /tmp/foo/a
darkstar:~# ls -l /tmp/foo/a
-rwxr-x--- 1 root root  0 2008-06-06 22:29 a

SUID, SGID, et le "Sticky" Bit

Navigation

Chapitre précédent : Utilisateurs et groupes

Chapitre suivant : Travailler avec les systèmes de fichiers

Sources

 fr:slackbook:filesystem_permissions ()
Cette traduction est plus ancienne que la page originale et est peut-être dépassée. Voir ce qui a changé.