La gestion des droits d’accès sous GNU/Linux, si elle peut sembler obscure au début, s’avère en fait très poussée et, une fois comprise, permet à l’utilisateur de gérer très finement les permissions accordées aux autres ainsi qu’à lui même.
Table des matières
A propos des utilisateurs et groupes
Comme sur tout mauvais bon système d’exploitation, sous Linux, il est possible de créer autant de comptes utilisateur qu’on le souhaite (en fait « seulement » 2³², soit un peu plus de 4 milliards, depuis le noyau 2.6).
De plus, il est possible de définir des groupes. On peut donc attribuer un utilisateur à tel ou tel groupe. Le ‘ou’ n’étant ici pas exclusif : un utilisateur peut appartenir à plusieurs groupes.
Visualisation des droits d’un fichier
Pour afficher le contenu d’un répertoire avec les droits associés au contenu :
ls -l |
Si vous voulez n’afficher que les droits sur fichier :
ls -l fichier |
La réponse se lit dans cet ordre :
- Le premier caractère : ‘d’, ‘l’, ou ‘-‘ pour directory, link ou fichier quelconque
- Les droits du propriétaire, dans cet ordre : ‘r’ (read/lecture) ‘w’ (write/écriture) ‘x’ (éxécution), ‘-‘ si le droit n’est pas activé
- Les droits du groupe (même syntaxe)
- Les droits des autres utilisateurs (idem)
- Nombre de lien(s) vers le fichier (en s’en fout ici)
- Nom du propriétaire
- Nom du groupe
- Taille du fichier
- Date de dernière modification
En guise d’exemple, si ls -l d’un fichier vous donne :
-rw-r--r-- 1 toto famille |
Alors, Toto (membre du groupe ‘famille’) est propriétaire du fichier, il a les droits de lecture et d’écriture sur le fichier. Les autres membres de la famille ont les droits de lecture, tout comme les autres utilisateurs.
Changer le propriétaire d’un fichier
Ce changement se fait par la commande chown :
chown toto fichier |
Maintenant, Toto est propriétaire de fichier.
Changer les permissions sur un fichier
Pour modifier les droits sur un fichier, c’est le fameux chmod. La syntaxe la plus simple à retenir utilise les arguments :
- ‘u’, ‘g’, ‘o’ et ‘a’ respectivement pour user, group, others et all
- ‘+’, ‘-‘ et ‘=’ pour l’ajout, la suppression ou l’exactitude des droits alloués.
Quelques exemples pour illustrer
Ajouter le droit d’exécution au propriétaire :
chmod u+x fichier |
Enlever le droit d’écriture au groupe :
chmod g-w fichier |
N’autoriser que la lecture aux autres utilisateurs :
chmod o=r fichier |
Pour finir, une récursivité pour interdire aux autres utilisateurs tout accès à dossier, ainsi qu’à tous les sous-dossiers et fichiers inclus :
chmod -R o= dossier |
Remarques
Si on ne spécifie pas le type d’utilisateur, c’est all qui est utilisé
chmod +x fichier |
est donc équivalent à :
chmod a+x fichier |
Il est possible de passer plusieurs arguments dans la même commande, séparés par des virgules :
chmod u+x,g-w,o= fichier |
Valeur octale du chmod
Un nom bien barbare pour dire qu’on va écrire la valeur du chmod de façon décimale (3 droits, pour 3 types d’utilisateurs, donc 2³.2³.2³=512 valeurs possibles). La valeur numérique s’écrira sous forme de 3 chiffres consécutifs, chiffres compris entre 0 et 7.
Si vous êtes familier du code binaire, vous saisirez vite la logique : pour chaque type d’utilisateur, vous remplacez chaque permission par 1 si elle est accordée, 0 sinon. Il suffit alors d’écrire de façon décimale la valeur binaire obtenue. En faisant ça pour les trois types d’utilisateur, on trouve bien un nombre de la forme décrite ci-dessus.
Pour ceux qui ne savent pas faire la transformation binaire-décimale, c’est le moment d’apprendre ! Si ça vous pèse d’apprendre ça, voilà un récapitulatif :
- aucun droit : 0 (—)
- exécution seulement : 1 (–x)
- écriture seulement : 2 (-w-)
- écriture et exécution : 3 (-wx)
- lecture seulement : 4 (r–)
- lecture et exécution : 5 (r-x)
- lecture et écriture : 6 (rw-)
- tous les droits : 7 (rwx)
Exemples de chmod octal
Tous les droits au propriétaire, rien au autres :
chmod 700 fichier |
Droits de lecture et écriture au propriétaire, lecture pour le groupe et rien pour les autres :
chmod 640 |
Droits par défaut lors de la création d’un fichier
Par défaut, c’est rw-r–r– avec pour propriétaire le créateur du fichier. On peut toutefois changer temporairement cette valeur en lançant :
umask x |
Ainsi, durant toute votre session utilisateur, les fichiers que vous créerez auront x pour valeur chmod (valeur octale, voir § précédent). Si vous voulez que cette configuration soit permanente, il faut éditer le fichier .bash_profile.
Maintenant que vous connaissez tout des droits, vous pouvez partager les documents que vous souhaitez sans risque sur vos données sensibles.
Bonne exécution !