En clair
Sous Linux et macOS, chaque fichier porte trois serrures : une pour son propriétaire, une pour son groupe, une pour tous les autres. Chaque serrure ouvre ou non trois portes : lire, écrire, exécuter. chmod 640 est la façon codée de dire « le propriétaire lit et écrit, le groupe lit, les autres rien ». Le calculateur traduit dans les deux sens.
Lire la notation octale
Chaque chiffre est la somme des droits accordés : 4 pour lire, 2 pour écrire, 1 pour exécuter. Les trois chiffres concernent, dans l'ordre, le propriétaire, le groupe et les autres.
| Chiffre | Droits | Symbolique |
|---|---|---|
| 7 | lire, écrire, exécuter (4+2+1) | rwx |
| 6 | lire, écrire (4+2) | rw- |
| 5 | lire, exécuter (4+1) | r-x |
| 4 | lire seulement | r-- |
| 0 | aucun droit | --- |
Un quatrième chiffre, placé devant, porte les bits spéciaux : 4 pour setuid, 2 pour setgid, 1 pour le sticky bit. 2775 est donc un dossier 775 avec setgid.
Fichier ou dossier : les droits ne veulent pas dire la même chose
| Droit | Sur un fichier | Sur un dossier |
|---|---|---|
r |
Lire le contenu | Lister les noms des fichiers |
w |
Modifier le contenu | Créer, renommer, supprimer des fichiers (avec x) |
x |
Exécuter comme programme | Entrer dans le dossier et ouvrir ses fichiers |
Le droit de supprimer un fichier
Supprimer un fichier dépend des droits sur le dossier qui le contient, pas sur le fichier lui-même. C'est pourquoi /tmp porte le sticky bit (1777) : tout le monde peut y écrire, mais chacun ne peut supprimer que ses propres fichiers.
Le umask
Le umask retire des droits aux fichiers et dossiers au moment de leur création. On part de 666 pour un fichier et de 777 pour un dossier, puis on enlève les droits du umask : avec 022, on obtient 644 et 755. Un umask de 027 retire en plus tout accès aux autres (640 et 750) : c'est un bon réglage pour un serveur.
umask # affiche le umask courant
umask 027 # le change pour la session en cours
Pour le rendre permanent, ajoutez la ligne umask 027 à ~/.profile, ou réglez UMASK dans /etc/login.defs pour tous les utilisateurs.
Pour aller plus loin sur l'administration d'un serveur Linux, voir Sécuriser l'accès SSH et Les commandes Linux pour débuter.