Mode numérique
Chiffres octaux des permissions
4Lecture (r)
2Écriture (w)
1Exécution (x)
0Aucune 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
4r-- — 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]
uUtilisateur (propriétaire)
gGroupe
oAutres
aTous (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-xScript/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 rwxrwxrwxAccè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
umaskAfficher le umask courant
umask 022Fichiers : 644, Répertoires : 755
umask 077Fichiers : 600, Répertoires : 700
umask 002Fichiers : 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 webchmod -R 755 /var/www/html
Fichier de configchmod 600 app.conf
Répertoire SSHchmod 700 ~/.ssh
authorized_keys SSHchmod 600 ~/.ssh/authorized_keys
Répertoire partagéchmod 2775 /shared (setgid)
Fichiers de logchmod 640 /var/log/app.log
Scripts cronchmod 755 /etc/cron.daily/myjob
Répertoire temporairechmod 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)