Les droits d'accès aux fichiers et répertoires situés sur un système de fichier linux tel que ext4, sont fonctions
de permissions (lecture, écriture, exécution, ...)
attribuées à un propriétaire, un groupe et aux autres utilisateurs
Ce document décrit comment afficher, modifier les droits d'accès dans le cas d'un système de fichier linux.
Dans le cas de systèmes de fichier non linux, par exemple FAT ou NTFS, n'utilisant pas le système de droits linux, les permissions et propriétaires sont communs pour tous les fichiers et répertoires du système de fichiers : voir Montage d'un système de fichiers
Sommaire
1 - Propriétés des fichiers
Les propriétés d'un fichier peuvent être affichées avec ls -l ou ls -n
$ ls -l |grep exemple -rw-r--r-- 1 pengouin pengouin 0 mars 18 14:37 exemple_fichier lrwxrwxrwx 1 pengouin pengouin 15 mars 18 14:40 exemple_lien -> exemple_fichier drwxr-xr-x 2 pengouin pengouin 4096 mars 18 14:37 exemple_répertoire
$ ls -n |grep exemple -rw-r--r-- 1 1000 1000 0 mars 18 14:37 exemple_fichier lrwxrwxrwx 1 1000 1000 15 mars 18 14:40 exemple_lien -> exemple_fichier drwxr-xr-x 2 1000 1000 4096 mars 18 14:37 exemple_répertoire
Le premier caractère indique le type de fichiers :
- Fichier ordinaire l Lien d Répertoire b Périphérique Bloc c Périphérique Caractère
Les 3 caractères suivants indiquent les permissions accordées au propriétaire
r permission de lecture w permission d'écriture x permission d'exécution - la lettre rwx est remplacée par - si la permission n'est pas accordée
Les 3 caractères suivants indiquent les permission accordées aux membres du groupe, selon la même notation
Les 3 caractères suivants indiquent les permission accordées aux autres (ni propriétaire, ni groupe), selon la même notation
Les troisièmes et quatrièmes champs indiquent le propriétaire et le groupe, dans le cas présent, 1000 et 1000, correspondant à l'utilisateur et au groupe pengouin et pengouin dans le cas présent
Note : Le droit d’exécution est nécessaire sur un répertoire pour accéder à son contenu
2 - Modification de l'appartenance
Seul root peut modifier le propriétaire et le groupe. Les modifications s'effectuent à l'aide de la commande chown.
Modifier le propriétaire d'un fichier (ou d'un répertoire)
$ sudo chown pengouinbis fichier_démo $ ls -l exemple_fichier -r--r-x--x 1 pengouin pengouinbis 0 mars 18 14:37 exemple_fichier
Modifier le groupe d'un fichier (ou d'un répertoire)
$ sudo chown :pengouinbis fichier_démo
Modifier le propriétaire et le groupe d'un fichier (ou d'un répertoire)
Les modifications s'effectuent avec la commande chmod. Deux notations peuvent être utilisées :
une notation symbolique, utilisée pour modifier des permissions en laissant inchangées les autres permissions
une notation numérique octale, utilisée pour redéfinir toutes les permissions
Seul le propriétaire et root peuvent modifier les permissions d'un fichier
3.2 - Modification d'une ou plusieurs permissions - Notation symbolique
u, g, o, a sont utilisés pour désigner respectivement le propriétaire (user), le groupe (group), les autres (other) et tous (all)
+,=,- sont utilisés respectivement pour donner, définir ou retirer une permission
Exemples :
Ajout de la permission d'exécution à l'utilisateur
$ chmod u+x fichier_exemple
Ajout de la permission d'exécution et suppression de la permission de lecture au groupe
$ chmod g-r+x fichier_exemple
Ajout des permissions lecture et écriture à tous
$ chmod a=rw fichier_exemple
Combinaison de modifications
$ chmod u+x,g-r+x,o=rw
3.3 - Redéfinition de toutes les permissions - Notation octale
Les permissions sont exprimées sous la forme de trois chiffres, le premier chiffre pour le propriétaire, le second pour le groupe, le troisième pour les autres.
Chaque chiffre est la somme des permissions attribuées : +4 pour r, +2 pour w, +1 pour x, soit :
Exemple : Permissions utilisateur r-- (4), permissions groupe -wx (3), permissions autres --x (1):
$ chmod 431 test
$ ls -l test -r---wx--x 1 philippe philippe 0 janv. 3 12:16 test
3.4 - Modification récursive
Pour modifier un répertoire et son contenu récursivement :
$ chmod -R 451 exemple_répertoire
3.5.3 Redéfinition de tous les répertoires et fichiers du répertoire courant
Pour redéfinir les permissions de tous les fichiers du répertoire courant (et de ses sous-répertoires) avec les permissions par défaut (644)
$ find * -type f -exec chmod 644 {} \;
Pour redéfinir les permissions de tous les répertoires (et sous-répertoires) du répertoire courant avec les permissions par défaut (755)
$ find ./* -type d -exec chmod 755 {} \;
4 - Permissions par défaut
4.1 - Valeurs
Les permissions par défaut des fichiers et répertoires lors de leur création peuvent être déterminées
avec ls -l
à partir de la commande umask
4.1.1 Utilisation de ls -l
Créer un fichier et afficher ses permissions : les fichiers on rw-r--r--
$ touch test && ls -n test -rw-r--r-- 1 1000 1000 0 févr. 14 19:03 test
Créer un répertoire et afficher ses permissions : rwxr-xr-x
$ mkdir test && ls -n |grep test drwxr-xr-x 2 1000 1000 4096 févr. 14 19:07 test
4.1.2 Utilisation du masque de création
Afficher le masque par défaut
$ umask 0022
On en déduit les permissions par défaut des fichiers : 644 en notation octale (soit rw-r-r)
666-22=644
et des répertoires : 755 en notation octale (soit rwxr-xr-x)
777-22=755
4.2 - Modification
Pour modifier les permissions qui seront appliquées lors de la création des fichiers et répertoires, redéfinir le masque avec la commande umask.
Dans l'exemple ci-dessous, le masque est redéfini avec la valeur 66. Tout fichier (respectivement répertoire) créé après la modification du masque, prendra les permissions respectives 600 et 711
$ umask 66
$ touch test && ls -n test -rw------- 1 1000 1000 0 févr. 14 19:20 test
$ mkdir test && ls -n |grep test drwx--x--x 2 1000 1000 4096 févr. 14 19:23 test
Fermer et réouvrir le shell pour retrouver la valeur par défaut du masque, ou bien la redéfinir dans le shell
$ umask 0022
Dans l'exemple ci-dessous, le fichier est créé dans un sous-shell dans lequel le masque a été modifié. Ceci ne modifie pas le masque du shell courant
$ rm test;(umask 66;touch test); ls -og test -rw------- 1 0 août 24 23:01 test
5 - Création d'un répertoire commun entre plusieurs utilisateurs
5.1 - Avec droits lecture pour tous
Créer un groupe "club" avec les utilisateurs user1 user2
$ sudo addgroup club $ sudo adduser user1 club $ sudo adduser user2 club
Mettre le groupe club comme groupe du répertoire à partager
$ sudo chown -R :club répertoire_partagé
Modifier les droits pour que les fichiers créés héritent du groupe du répertoire su
$ sudo chmod -R g+s répertoire_partagé
5.2 - Avec droits écritures pour tous sur tous les fichiers créés
Pour que les membres du groupe créent les fichiers avec les droits rwx