4.2 — Modifier les droits avec chmod
chmod modifie les permissions d'un fichier ou d'un dossier. Il accepte une notation symbolique, plus lisible, ou une notation numérique.
Notation symbolique
Catégories : u propriétaire, g groupe, o autres, a tous.
Opérations : + ajouter, - retirer, = définir exactement.
chmod u+x script.sh # ajouter l'exécution au propriétaire
chmod g+w partage/ # autoriser l'écriture au groupe
chmod o-r fichier.txt # retirer la lecture aux autres
chmod u=rw,g=r,o= fichier # définir précisément les droits
chmod a+r documentation.pdf # lecture pour tous
Notation numérique
Chaque droit possède une valeur : lecture 4, écriture 2, exécution 1.
| Valeur | Droits | Signification |
|---|---|---|
| 7 | rwx |
lecture, écriture, exécution |
| 6 | rw- |
lecture et écriture |
| 5 | r-x |
lecture et exécution |
| 4 | r-- |
lecture seule |
| 0 | --- |
aucun droit |
chmod 644 fichier.txt # rw-r--r--
chmod 600 secret.txt # rw-------
chmod 755 script.sh # rwxr-xr-x
chmod 750 dossier-prive # rwxr-x---
Appliquer récursivement
chmod -R u+rwX,g+rX,o-rwx projet/
Le X majuscule ajoute l'exécution uniquement aux dossiers et aux fichiers déjà exécutables. Il évite de rendre exécutables tous les documents ordinaires.
Pour régler séparément fichiers et dossiers :
find projet -type d -exec chmod 750 {} +
find projet -type f -exec chmod 640 {} +
Commencer par afficher les cibles :
find projet -type f -print
Cas courant : clé SSH
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
Vérifier
stat -c '%A %a %U:%G %n' fichier.txt
namei -l /chemin/vers/fichier.txt
namei -l affiche les droits de chaque composant du chemin, ce qui aide à repérer un dossier parent non traversable.
Ne pas utiliser chmod -R 777 comme dépannage universel. Accorder seulement les droits nécessaires au bon utilisateur ou au bon groupe.