MDstable
NoteSnippetChecklistPlaybook

Permissions fichiers Linux

chmod, chown, ACL, SUID/SGID/Sticky bit — maîtriser les droits d'accès

snippetbeginner 2025-05-10 3 min read
linuxpermissionschmodchownaclsuidsgid

Lecture des permissions

bash
ls -la
# -rwxr-xr-- 1 alice devs 4096 May 10 12:00 script.sh
# |||||||||
# |||||||||└─ autres : r-- (4)
# |||||└────── groupe : r-x (5)
# ||└────────── user : rwx (7)
# |└──────────── type : - fichier, d dossier, l symlink

chmod — Changer les permissions

bash
Variables
{{FILE}}
{{DIR}}
# Notation numérique (octal)
chmod 755 {{FILE}} # rwxr-xr-x
chmod 644 {{FILE}} # rw-r--r--
chmod 600 {{FILE}} # rw------- (ex: clé privée SSH)
chmod 700 {{DIR}} # rwx------ (répertoire privé)
# Notation symbolique
chmod ux {{FILE}} # ajouter exec à owner
chmod g-w {{FILE}} # retirer write au groupe
chmod or {{FILE}} # others = read seulement
chmod ar {{FILE}} # all (u+g+o) → read
chmod ugrwxo {{FILE}} # owner+group=full, others=rien
# Récursif
chmod -R 755 {{DIR}}
chmod -R uX {{DIR}} # +X = exec seulement si déjà exec ou dossier
# Référence : copier les droits d'un autre fichier
chmod --reference=fichier_source {{FILE}}

chown — Changer le propriétaire

bash
Variables
{{USER}}
{{FILE}}
{{GROUP}}
{{DIR}}
# Changer owner
chown {{USER}} {{FILE}}
# Changer owner et groupe
chown {{USER}}{{GROUP}} {{FILE}}
# Changer seulement le groupe
chown {{GROUP}} {{FILE}}
# ou
chgrp {{GROUP}} {{FILE}}
# Récursif
chown -R {{USER}}{{GROUP}} {{DIR}}
# Ne pas suivre les symlinks
chown -h {{USER}} symlink

Bits spéciaux : SUID / SGID / Sticky

bash
Variables
{{FILE}}
{{DIR}}
# SUID (4xxx) — s'exécute avec les droits du owner
chmod us {{FILE}}
chmod 4755 {{FILE}} # rwsr-xr-x
# Ex: /usr/bin/passwd (SUID root pour changer le mot de passe)
# SGID (2xxx) — s'exécute avec les droits du groupe
chmod gs {{DIR}}
chmod 2755 {{DIR}} # drwxr-sr-x
# Sur un répertoire : les nouveaux fichiers héritent du groupe
# Sticky bit (1xxx) — seul le owner peut supprimer dans ce dossier
chmod t {{DIR}}
chmod 1777 {{DIR}} # drwxrwxrwt
# Ex: /tmp — tout le monde peut écrire mais pas supprimer les fichiers des autres
# Chercher les fichiers SUID/SGID (audit sécurité)
find -perm -4000 -type f 2>/dev/null # SUID
find -perm -2000 -type f 2>/dev/null # SGID
find -perm -1000 -type d 2>/dev/null # Sticky

ACL — Droits fins par utilisateur

bash
Variables
{{FILE}}
{{USER}}
{{GROUP}}
{{DIR}}
# Voir les ACL
getfacl {{FILE}}
# Ajouter des droits à un utilisateur spécifique
setfacl -m u{{USER}}rwx {{FILE}}
# Ajouter des droits à un groupe spécifique
setfacl -m g{{GROUP}}r {{FILE}}
# ACL par défaut sur un répertoire (héritées par les nouveaux fichiers)
setfacl -d -m u{{USER}}rwx {{DIR}}
# Supprimer une ACL spécifique
setfacl -x u{{USER}} {{FILE}}
# Supprimer toutes les ACL
setfacl -b {{FILE}}
# Copier les ACL d'un fichier vers un autre
getfacl fichier_source | setfacl --set-file=- fichier_dest

umask — Permissions par défaut

bash
# Voir le umask actuel
umask
# Calculer : 0666 - umask = droits fichier, 0777 - umask = droits dossier
# umask 022 → fichiers: 644 (rw-r--r--), dossiers: 755 (rwxr-xr-x)
# umask 027 → fichiers: 640 (rw-r-----), dossiers: 750 (rwxr-x---)
# Changer temporairement
umask 027
# Changer de façon permanente (dans ~/.bashrc ou /etc/profile)
echo "umask 027" >> /etc/profile

Attributs étendus (chattr / lsattr)

bash
Variables
{{FILE}}
{{DIR}}
# Rendre un fichier immuable (même root ne peut pas le modifier)
chattr i {{FILE}}
# Retirer l'immuabilité
chattr -i {{FILE}}
# Append-only (log files)
chattr a {{FILE}}
# Voir les attributs
lsattr {{FILE}}
lsattr -R {{DIR}}
💡 Tip —

Pour les audits sécurité : find / -perm -4000 2>/dev/null liste tous les binaires SUID — comparer avec une baseline connue. Un SUID sur un éditeur ou interpréteur (vim, python, bash) permet une escalade de privilèges triviale.

OPS·BRAIN v1.09 notes · SysAdminlocal