RÉFÉRENCE RAPIDE CHMOD
Permissions de fichiers, modes numérique et symbolique, bits spéciaux, umask
Mode numérique
Chiffres octaux des permissions
| 4 | Lecture (r) |
| 2 | Écriture (w) |
| 1 | Exécution (x) |
| 0 | Aucune permission |
Format à trois chiffres
chmod 755 file # rwxr-xr-x
chmod 644 file # rw-r--r--
chmod 700 file # rwx------
chmod 600 file # rw-------
Calcul des chiffres
| 7 (4+2+1) | rwx — lecture, écriture, exécution |
| 6 (4+2) | rw- — lecture, écriture |
| 5 (4+1) | r-x — lecture, exécution |
| 4 | r-- — lecture seule |
| 3 (2+1) | -wx — écriture, exécution |
| 2 | -w- — écriture seule |
| 1 | --x — exécution seule |
| 0 | --- — aucune permission |
Mode symbolique
Syntaxe : [ugoa][+-=][rwxXst]
| u | Utilisateur (propriétaire) |
| g | Groupe |
| o | Autres |
| a | Tous (u + g + o) |
| + | Ajouter une permission |
| - | Retirer une permission |
| = | Définir une permission exacte |
Exemples symboliques
chmod u+x file # propriétaire : ajouter exécution
chmod g-w file # groupe : retirer écriture
chmod o=r file # autres : lecture seule
chmod a+r file # tous : ajouter lecture
chmod u+x,g-w,o= file # opérations combinées
Permissions courantes
Présélections de permissions
| 644 rw-r--r-- | Fichier normal — propriétaire rw, autres lecture |
| 755 rwxr-xr-x | Script/binaire — propriétaire rwx, autres rx |
| 600 rw------- | Fichier privé — propriétaire seulement |
| 400 r-------- | Lecture seule privée (clés SSH) |
| 666 rw-rw-rw- | Fichier accessible à tous en écriture (éviter) |
| 777 rwxrwxrwx | Accès total pour tous (éviter) |
Référence rapide
chmod 644 *.html # fichiers web : propriétaire rw, monde r
chmod 755 *.sh # scripts : propriétaire rwx, monde rx
chmod 600 ~/.ssh/id_* # clés SSH : propriétaire seulement
chmod 400 secret.pem # certificat : lecture seule
Permissions de répertoires
Signification des permissions pour les répertoires
| r (4) | Lister le contenu du répertoire (ls) |
| w (2) | Créer/supprimer des fichiers dans le répertoire |
| x (1) | Accéder (cd dans) au répertoire |
| rx (5) | Lister + accéder (typique pour lecture) |
| rwx (7) | Contrôle total |
Permissions courantes pour répertoires
chmod 755 dir/ # standard : propriétaire rwx, autres rx
chmod 700 dir/ # privé : propriétaire seulement
chmod 750 dir/ # accès groupe : propriétaire rwx, groupe rx
chmod 1777 /tmp # sticky bit : seul le propriétaire peut supprimer
Bits spéciaux
Setuid, Setgid, Sticky
| Setuid (4xxx) | Exécuter en tant que propriétaire du fichier (ex. passwd) |
| Setgid (2xxx) | Exécuter avec le groupe du fichier / hériter du groupe du répertoire |
| Sticky (1xxx) | Seul le propriétaire peut supprimer des fichiers (ex. /tmp) |
Définir les bits spéciaux
chmod 4755 program # setuid : -rwsr-xr-x
chmod 2755 dir/ # setgid : drwxr-sr-x
chmod 1755 dir/ # sticky : drwxr-xr-t
chmod u+s program # setuid symbolique
chmod g+s dir/ # setgid symbolique
chmod +t dir/ # sticky bit symbolique
Récursif
Changements de permissions récursifs
chmod -R 755 dir/ # tout mettre à 755 récursivement
chmod -R u+rwX dir/ # propriétaire rw, +x sur les répertoires seulement
chmod -R go-w dir/ # retirer l'écriture pour groupe/autres
Fichiers vs répertoires avec find
# mettre les répertoires à 755, les fichiers à 644
find /path -type d -exec chmod 755 {} +
find /path -type f -exec chmod 644 {} +
Majuscule X — Exécution conditionnelle
| x (minuscule) | Ajouter l'exécution à tous les fichiers et répertoires |
| X (majuscule) | Ajouter l'exécution seulement aux répertoires et fichiers déjà exécutables |
umask
Fonctionnement du umask
| umask | Afficher le umask courant |
| umask 022 | Fichiers : 644, Répertoires : 755 |
| umask 077 | Fichiers : 600, Répertoires : 700 |
| umask 002 | Fichiers : 664, Répertoires : 775 |
Calcul du umask
# permission par défaut moins umask = effective
# Fichiers : 666 - 022 = 644 (rw-r--r--)
# Répertoires : 777 - 022 = 755 (rwxr-xr-x)
umask # afficher le umask courant
umask 022 # valeur typique par défaut
umask -S # afficher en notation symbolique
Patterns courants
Cas d'usage courants
| Racine web | chmod -R 755 /var/www/html |
| Fichier de config | chmod 600 app.conf |
| Répertoire SSH | chmod 700 ~/.ssh |
| authorized_keys SSH | chmod 600 ~/.ssh/authorized_keys |
| Répertoire partagé | chmod 2775 /shared (setgid) |
| Fichiers de log | chmod 640 /var/log/app.log |
| Scripts cron | chmod 755 /etc/cron.daily/myjob |
| Répertoire temporaire | chmod 1777 /tmp (sticky) |
Afficher les permissions
ls -l file.txt # afficher les permissions
ls -ld dir/ # afficher les permissions du répertoire
stat -c '%A %a %n' * # symbolique + numérique + nom
getfacl file.txt # afficher les ACL (si utilisées)