Devmind.
Menu

Apprendre, à votre rythme

Tous les cursus sont accessibles sans compte.

Chapitre 12 / Notion

Permissions avancées, ACL et bits spéciaux

rwx ne suffit plus dès qu'on partage : « le groupe dev lit, Marie écrit, les autres rien » ne tient pas en 3 triplets.

◷ 13 minutesTravail sur votre machine

Prérequis : cours précédent ; utilisateurs et services.

Pourquoi

rwx ne suffit plus dès qu'on partage : « le groupe dev lit, Marie écrit, les autres rien » ne tient pas en 3 triplets. ACL = permissions par utilisateur/groupe nommé. Et setuid/sticky évitent des catastrophes connues.

Concepts

  • ACL (setfacl/getfacl) : setfacl -m u:marie:rw rapport.pdf — fin, par nommé. getfacl pour auditer (le + dans ls -l signale des ACL !).
  • setuid/setgid (chmod u+s, 4xxx/2xxx) : exécuter avec les droits du PROPRIÉTAIRE/groupe (ex. passwd qui écrit /etc/shadow). Puissant = dangereux : auditer (find / -perm -4000).
  • sticky bit (chmod +t, 1xxx) : sur dossier partagé (/tmp) : on ne supprime que SES fichiers. Sans lui : n'importe qui efface tout.
  • umask : le masque à la création (022 → fichiers 644, dossiers 755). Fichiers « trop ouverts » à la création = umask à revoir (027 en sensible).

Exemple : partage propre

setfacl -m g:dev:rwx -m d:g:dev:rwx /srv/partage   # d: = défaut (héritage futurs fichiers)
getfacl /srv/partage
find / -xdev -perm -4000 2>/dev/null   # setuid existants : chacun justifié ?

Cas réel

Dossier projet en 777 « pour que tout le monde bosse » : un stagiaire rm -rf le travail d'autrui (légal avec 777 !). Groupe + ACL + sticky : chacun ses fichiers, suppression des siens seuls.

Pièges

  • cp sans --preserve : perd les ACL (recréer avec cp -a ou rsync -A).
  • setuid sur script shell : ignoré par le noyau (heureusement) — setuid = binaires compilés audités uniquement.
  • umask 000 « pour simplifier » : tout créé en 777/666. 022 standard, 027 sensible, 077 secrets.

À retenir

ACL pour le fin (auditer le +), setuid audité, sticky sur partagés, umask selon sensibilité.

Pas de correction en ligneConfrontez votre code aux résultats attendus du cours.