Linux — utilisation avancée et administration · Étape 08

Comprends umask, ACL et bits spéciaux

Observe la création des droits par défaut, le rôle du setgid et du sticky bit, puis ajoute une ACL sans casser les permissions classiques.

Durée indicative · ~1 h 30Niveau intermédiairePrérequis conseillé · Leçon 7 — chmod symbolique et octalPratique · TP
L’idée reçue

« umask 022 applique directement le mode 022 aux nouveaux fichiers. »

La umask retire des bits aux modes de création proposés par l’application. Les fichiers partent généralement de 666 et les répertoires de 777, avant retrait.

01Observe la umask courante

umask
umask -S
export LAB="/tmp/soria-linux-permissions-$USER"
mkdir -p "$LAB/umask-demo"
rm -f "$LAB/umask-demo"/*

02Compare deux créations

(
umask 022
touch "$LAB/umask-demo/file-022"
mkdir "$LAB/umask-demo/dir-022"
)
(
umask 027
touch "$LAB/umask-demo/file-027"
mkdir "$LAB/umask-demo/dir-027"
)
stat -c '%a %A %n' "$LAB/umask-demo"/*
Avec 022, un fichier créé depuis 666 devient 644 et un répertoire créé depuis 777 devient 755. Avec 027, ils deviennent typiquement 640 et 750.

03Observe setgid et sticky bit

mkdir -p "$LAB/setgid-demo"
chmod 2770 "$LAB/setgid-demo"
stat -c '%a %A %n' "$LAB/setgid-demo"
stat -c '%a %A %n' "$LAB/sticky"
Bit
Sur un répertoire
Cas d’usage
setgid
les nouveaux objets héritent du groupe du répertoire
espace d’équipe
sticky
seul le propriétaire de l’entrée, du répertoire ou root peut supprimer
répertoire partagé comme /tmp

Le bit setuid est expliqué mais non manipulé ici : il modifie l’identité effective d’un exécutable et exige une analyse de sécurité stricte.

04Ajoute une ACL utile

Installe le paquet acl si setfacl et getfacl sont absents. Le compte système nobody est utilisé comme identité de test lorsqu’il existe.

command -v setfacl
getent passwd nobody
setfacl -m u:nobody:--x "$LAB/partage"
setfacl -m u:nobody:r "$LAB/partage/equipe.txt"
setfacl -m "g:$(id -gn):rw" "$LAB/partage/equipe.txt"
getfacl -p "$LAB/partage"
getfacl -p "$LAB/partage/equipe.txt"
ls -ld "$LAB/partage"
ls -l "$LAB/partage/equipe.txt"

Une ACL ajoute des entrées nommées sans remplacer les classes classiques. Le caractère + dans ls -l signale leur présence. Le droit x sur le répertoire est nécessaire pour atteindre le fichier.

Lorsque sudo est disponible, vérifie l’effet réel :

sudo -u nobody cat "$LAB/partage/equipe.txt"

05Observe le masque ACL

setfacl -m m:--- "$LAB/partage/equipe.txt"
getfacl -p "$LAB/partage/equipe.txt"
sudo -u nobody cat "$LAB/partage/equipe.txt" || true
setfacl -m m:rw "$LAB/partage/equipe.txt"
sudo -u nobody cat "$LAB/partage/equipe.txt"
Le masque ACL limite les droits effectifs des entrées de groupe et des utilisateurs nommés, même si leur entrée affiche davantage de bits.

06Nettoie l’ACL

setfacl -b "$LAB/partage/equipe.txt"
setfacl -b "$LAB/partage"
getfacl -p "$LAB/partage/equipe.txt"
Challenge autonome

Conçois un espace d’équipe

Prépare un répertoire où les nouveaux fichiers héritent du groupe, où la umask évite les droits pour other, et où une ACL accorde temporairement la lecture à un utilisateur nommé. Documente le mode, la umask, l’ACL et la commande de rollback.

Ce que tu retiens

La umask définit une politique de création, setgid et sticky structurent les espaces partagés, et les ACL ajoutent des exceptions contrôlées. Leur masque doit toujours être vérifié avec getfacl.

Ta progression

Chargement de l’état… Se connecter pour synchroniser.