Skip to main content

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.