Les permissions Unix sont au cœur de la sécurité des systèmes de fichiers comme Linux ou macOS. Souvent perçues comme un détail obscur, elles contrôlent précisément qui peut lire, écrire ou exécuter un fichier. Dans cet article, on démystifie leur fonctionnement réel, au-delà des basiques ls -l. Préparez-vous à comprendre pourquoi un simple chmod peut sauver ou ruiner votre serveur !
Les bases : propriétaire, groupe et autres
Tout commence avec la structure triadique des permissions Unix. Chaque fichier ou dossier appartient à un propriétaire (user), un groupe et le reste du monde (autres ou « others »).
-
Le propriétaire est l’utilisateur qui a créé le fichier (visible via
ls -l: premier nom). -
Le groupe est un ensemble d’utilisateurs partageant des droits (deuxième nom).
-
Autres désigne tous les utilisateurs non listés.
Ces entités reçoivent trois types de permissions : lecture (r), écriture (w) et exécution (x). Représentées en mode symbolique (rwxr-xr-x) ou octal (755), elles forment un code à 10 caractères : un type (d pour dossier, – pour fichier) suivi de trois triades.
Exemple : drwxr-xr-x signifie un dossier où le propriétaire a tous les droits (rwx), le groupe et les autres ont lecture/exécution (r-x). Mais que font-elles vraiment ?
Lecture (r) : accès au contenu, pas à la liste

La permission de lecture permet d’accéder au contenu d’un fichier ou de lister les fichiers dans un dossier.
-
Sur un fichier :
cat fichier.txtoulessmarchent ; sans r, vous obtenez « Permission denied ». -
Sur un dossier :
ls dossier/liste son contenu. Sans r, même le propriétaire ne voit rien !
Attention : r sur un dossier n’autorise pas l’accès aux fichiers dedans. Vous avez besoin de x (exécution) pour cd dedans ou lire ses sous-éléments. C’est contre-intuitif : un dossier sans x est comme une armoire verrouillée dont vous connaissez l’inventaire, mais impossible à ouvrir.
Testez : mkdir test; chmod 600 test; ls test/ → Échec si vous n’êtes pas root ! Pour plus de renseignements, cliquez ici.
Écriture (w) : modification et suppression conditionnelle
La permission d’écriture autorise les changements : créer, renommer ou supprimer dans un dossier, ou altérer le contenu d’un fichier.
-
Fichier :
echo "texte" > fichier.txtouvipour éditer. -
Dossier :
touch nouveau.txtdedans, ourm ancien.txt.
Piège majeur : pour supprimer un fichier, w n’est pas suffisant ! Vous devez avoir w + x sur le dossier parent. Unix vérifie les permissions du parent avant tout. Exemple : même si un fichier est 777 (tout le monde peut tout), rm échoue si le dossier parent manque de w.
Pour les dossiers, w seul permet de modifier la liste (rename), mais sans x, rien ne passe. C’est pourquoi les backups plantent souvent sur des perms mal fichues.
Exécution (x) : scripts, recherche et traversal
L’exécution (x) est polyvalente : elle rend un fichier exécutable (binaire ou script) et permet de traverser un dossier.
-
Fichier exécutable :
./monscript.shlance le code. Sans x, bash refuse même si r est là. -
Dossier : x autorise
cd dossier/et la recherche (commefind). C’est le « traversal bit » : vous passez à travers sans voir le contenu (sauf si r aussi).
Exemple concret : un /home/user/bin/ avec x mais sans r cache vos scripts aux curieux, tout en les rendant utilisables via PATH. Surveillez les binaires SUID (chmod u+s) : x + setuid exécute en tant que propriétaire, risqué si mal géré (pensez à sudo).
Permissions spéciales : SUID, SGID et sticky bit
Au-delà des basics, trois bits magiques boostent les permissions Unix :
-
SUID (4 en octal, s majuscule) : exécute en tant que propriétaire (ex:
/usr/bin/passwdchange votre mot de passe root). -
SGID (2, s minuscule) : sur fichier, exécute en tant que groupe ; sur dossier, hérite le groupe aux nouveaux fichiers.
-
Sticky bit (1, t) : sur dossier (/tmp), seuls proprio/groupe/propriétaire du fichier peuvent supprimer.
Danger : un SUID malveillant peut escalader les privilèges. Vérifiez avec find / -perm -4000.
Bonnes pratiques et outils pour gérer les permissions
-
chmod :
chmod 755 fichier(octal) ouchmod u+x fichier(symbolique). -
chown/chgrp :
chown user:group fichier. -
Outils :
statpour détails,setfaclpour ACL avancées (au-delà Unix basique).
Règle d’or : principe du moindre privilège. Serveurs web ? 644 fichiers, 755 dossiers. Ne laissez jamais 777 !
En maîtrisant ces mécanismes, vous sécurisez vraiment votre filesystem. Les permissions Unix ne bloquent pas juste ; elles orchestrent l’accès granulaire.