Les permissions d'un fichier indiquent qui peut le lire (r), l'écrire (w) ou l'exécuter (x), séparément pour trois publics : l'utilisateur propriétaire (u), le groupe du propriétaire (g) et les autres (o). chmod les modifie. Le Calculateur Chmod fait l'arithmétique à votre place.
Lire ls -l
-rwxr-xr-- 1 ana staff 1024 Oct 3 10:00 deploy.sh
Le premier caractère est le type (- fichier, d dossier, l lien symbolique). Les neuf suivants forment trois groupes de trois : rwx pour le propriétaire, r-x pour le groupe et r-- pour les autres. Ce script est donc 754 : le propriétaire peut tout faire, le groupe peut le lire et l'exécuter, les autres seulement le lire.
Chiffres octaux
Chaque public reçoit un chiffre qui est la somme de lire = 4, écrire = 2 et exécuter = 1.
| Chiffre | Binaire | Permissions |
|---|---|---|
7 |
111 |
rwx lire + écrire + exécuter |
6 |
110 |
rw- lire + écrire |
5 |
101 |
r-x lire + exécuter |
4 |
100 |
r-- lire |
3 |
011 |
-wx écrire + exécuter |
2 |
010 |
-w- écrire |
1 |
001 |
--x exécuter |
0 |
000 |
--- aucune |
Modes courants
| Octal | Symbolique | Signification |
|---|---|---|
644 |
-rw-r--r-- |
Fichier normal : vous lisez et écrivez, les autres lisent |
600 |
-rw------- |
Fichier privé : vous seul (clés SSH, secrets) |
640 |
-rw-r----- |
Vous lisez et écrivez, votre groupe lit, les autres rien |
664 |
-rw-rw-r-- |
Vous et votre groupe écrivez, les autres lisent |
755 |
-rwxr-xr-x |
Programme ou dossier : vous faites tout, les autres lisent et exécutent |
700 |
-rwx------ |
Programme ou dossier privé : vous seul |
750 |
-rwxr-x--- |
Vous faites tout, votre groupe lit et exécute, les autres rien |
775 |
-rwxrwxr-x |
Dossier partagé : vous et votre groupe faites tout |
444 |
-r--r--r-- |
Lecture seule pour tous |
400 |
-r-------- |
Lecture seule, et pour vous seul |
777 |
-rwxrwxrwx |
Tout le monde peut tout faire : à éviter |
Pour un dossier, r permet de lister son contenu, w de créer et supprimer des entrées et x d'y entrer et d'atteindre ce qu'il contient. Un dossier sans x est pratiquement verrouillé, c'est pourquoi les dossiers sont en général 755 ou 700 plutôt que 644.
Mode symbolique
Décrivez le changement plutôt que la valeur finale : qui (u, g, o ou a pour tous), un opérateur (+ ajouter, - retirer, = fixer exactement) et les permissions.
chmod u+x script.sh # le propriétaire peut l'exécuter
chmod go-w notes.txt # retire l'écriture au groupe et aux autres
chmod a=r readme.txt # tout le monde : lecture seule
chmod u=rwx,g=rx,o= tool # équivaut à 750
chmod -R u+rwX,go-rwx dir # récursif ; le X majuscule n'ajoute l'exécution qu'aux dossiers
Modifier beaucoup de fichiers d'un coup
find . -type d -exec chmod 755 {} + # tous les dossiers
find . -type f -exec chmod 644 {} + # tous les fichiers ordinaires
Mettre 755 partout rend exécutables les fichiers de données, et chmod -R 777 n'est presque jamais la bonne réponse à une erreur « permission refusée ». Cherchez quel utilisateur a besoin de l'accès et accordez exactement cela.
Bits spéciaux
Un quatrième chiffre en tête fixe trois bits spéciaux.
| Bit | Octal | Sur un fichier | Sur un dossier |
|---|---|---|---|
| setuid | 4000 |
s'exécute avec le propriétaire du fichier | sans effet sur la plupart des systèmes |
| setgid | 2000 |
s'exécute avec le groupe du fichier | les nouveaux fichiers héritent du groupe du dossier |
| sticky | 1000 |
ignoré | seul le propriétaire d'un fichier peut le supprimer (comme dans /tmp) |
chmod 1777 shared/ crée un dossier modifiable par tous avec le bit sticky, et chmod 2775 project/ garde les fichiers d'un dossier d'équipe dans un même groupe.
Permissions par défaut et umask
Les nouveaux fichiers partent de 666 et les nouveaux dossiers de 777, puis l'umask retire des bits. Avec l'umask courant 022, les nouveaux fichiers sont 644 et les dossiers 755. Avec 077, ils sont 600 et 700. Consultez le vôtre avec umask.