Le bit set-group-ID, couramment appelé setgid ou SGID, possède deux usages importants. Sur un fichier ordinaire exécutable, il peut modifier l’identifiant de groupe effectif du nouveau processus. Sur un répertoire, il fait hériter aux nouvelles entrées le groupe du répertoire, ce qui est particulièrement utile dans les arborescences collaboratives.
Permissions · Leçon 6
Setgid
Découvrez comment set-group-ID affecte les identifiants des exécutables et l’héritage du groupe dans les répertoires partagés.
Setgid sur les fichiers exécutables
Une liste détaillée peut afficher setgid à la position d’exécution du groupe :
$ ls -l /path/to/program
-rwxr-sr-x 1 root operators 24576 Jan 10 09:30 /path/to/program
Le s minuscule signifie que setgid et l’exécution du groupe sont tous deux définis. Le S majuscule signifie que setgid est défini mais que l’exécution du groupe est absente.
Lorsque le noyau honore ce bit pendant l’exécution, le processus reçoit un identifiant de groupe effectif dérivé du groupe propriétaire de l’exécutable. Des contrôles tels qu’un montage nosuid peuvent supprimer ce comportement, qui ne doit pas être considéré comme une garantie universelle pour chaque type de fichier ou environnement.
Lorsque setgid sur un exécutable est honoré, quel identifiant provient du groupe propriétaire de l’exécutable ?
Setgid sur les répertoires
Setgid sur un répertoire possède un autre rôle. Les nouveaux fichiers et sous-répertoires héritent normalement du groupe du répertoire plutôt que du groupe par défaut de leur créateur. Sous Linux, les nouveaux sous-répertoires héritent également du bit setgid, ce qui aide une arborescence de projet partagée à conserver un groupe cohérent.
Setgid n’accorde pas à lui seul l’écriture au groupe. Le mode du répertoire, l’umask du processus, le mode demandé lors de la création, les ACL par défaut et d’autres contrôles continuent de déterminer l’accès.
$ sudo chgrp developers /srv/project
$ sudo chmod g+s /srv/project
$ ls -ld /srv/project
drwxr-sr-x 2 root developers 4096 Jan 10 09:30 /srv/project
De quoi setgid sur /srv/project fait-il normalement hériter un nouveau fichier ?
Définir et retirer setgid
Définissez le bit symboliquement avec :
$ sudo chmod g+s myfile
Définissez-le avec les bits ordinaires au moyen d’un premier 2 octal :
$ sudo chmod 2755 myfile
Retirez uniquement le bit spécial avec chmod g-s myfile.
Quelle valeur setgid ajoute-t-il au premier chiffre octal des bits spéciaux ?
Employer les répertoires partagés en toute sécurité
Pour un répertoire collaboratif, associez le groupe propriétaire voulu, setgid et des bits d’accès choisis avec précision. Testez la création avec des utilisateurs représentatifs et examinez les résultats avec ls -ld. Évitez de rendre une arborescence accessible en écriture à tous simplement pour résoudre un problème de partage en groupe ; un groupe dédié, un umask ou une ACL par défaut appropriés et un répertoire setgid offrent généralement un contrôle plus clair.
La définition de setgid suffit-elle à autoriser les membres du groupe à créer des fichiers dans un répertoire ?
Leçon terminée
Vous avez terminé Setgid
Vous savez maintenant distinguer les significations de setgid pour les exécutables et les répertoires.
Reconnaître setgid à la position d’exécution du groupe.
Relier setgid sur un exécutable à l’identifiant de groupe effectif.
Employer setgid sur un répertoire pour préserver la propriété du groupe dans les arborescences partagées.
Définir ou retirer le bit sans le confondre avec l’accès ordinaire en écriture.
Conservez votre progression
Créez un compte gratuit pour enregistrer cette leçon et continuer sur n'importe quel appareil.
Créer un compte gratuit