Permissions Linux — référence complète (rwx, SUID, SGID, sticky, ACL)
Comprendre et maîtriser le modèle de permissions Linux, des bits rwx aux ACL POSIX, avec les pièges courants en production.
- #linux
- #least-privilege
- #hardening
Le modèle propriétaire / groupe / autres
Chaque fichier possède un propriétaire, un groupe et trois triplets de droits : u (user), g (group), o (others). Pour un fichier, r autorise la lecture, w l'écriture et x l'exécution. Pour un répertoire, la sémantique change :
| Droit | Fichier | Répertoire |
|---|---|---|
r | lire le contenu | lister les noms (ls) |
w | modifier le contenu | créer, renommer, supprimer des entrées |
x | exécuter | traverser (cd, accéder à un chemin) |
Supprimer un fichier dépend des droits du répertoire parent, pas du fichier lui-même.
Notation octale
r=4, w=2, x=1. chmod 750 script.sh donne rwxr-x---. Valeurs usuelles : 644 (fichiers publics), 640 (configuration avec secrets lisibles par un groupe de service), 600 (clés privées), 755 / 750 (répertoires).
Bits spéciaux
- SUID (4000) : l'exécutable s'exécute avec l'UID du propriétaire (
/usr/bin/passwd). Cible prioritaire des audits :find / -perm -4000 -type f 2>/dev/null. - SGID (2000) : sur un répertoire, les fichiers créés héritent du groupe du répertoire — idéal pour les dossiers partagés d'équipe.
- Sticky bit (1000) : dans
/tmp, seul le propriétaire d'un fichier peut le supprimer.
install -d -m 2770 -o root -g projet /srv/projet # dossier d'équipe
chmod +t /srv/depot # sticky bit
umask
Le umask retire des droits à la création : avec umask 027, un fichier est créé en 640 et un répertoire en 750. Définissez-le dans l'unité systemd (UMask=0027) plutôt que dans les profils shell pour les services.
ACL POSIX
Quand un triplet ne suffit pas, les ACL ajoutent des entrées nominatives :
setfacl -m u:deploy:rwx /srv/app # droit ponctuel
setfacl -d -m g:ops:rx /srv/app # ACL par défaut (héritée)
getfacl /srv/app
Le + à la fin de ls -l signale une ACL. Le masque ACL plafonne les droits effectifs des entrées de groupe et nominatives.
Pièges fréquents en production
chmod -R 777pour « débloquer » : ouvre l'écriture à tous et casse les contrôles de SSH (StrictModes).- Oublier le
xsur un répertoire parent :Permission deniedalors que le fichier est en644. - Service systemd tournant avec un
User=différent du propriétaire des fichiers. - SELinux : les permissions POSIX peuvent être correctes et l'accès refusé quand même (
ls -Z,ausearch -m avc).
Méthode de diagnostic
namei -l /srv/app/config/app.yml # droits de chaque composant du chemin
sudo -u appsvc cat /srv/app/config/app.yml