Réponses:
Bien qu'un fichier / binaire setgid ne soit évidemment pas utile, je trouve certainement le bit setgid très utile appliqué sur les répertoires. En supposant que vous faites partie de différents groupes de travail, qui ont chacun leurs propres groupes Unix (autorisation). Vous voudrez sûrement alors mettre le bit setgid sur les dossiers de projet, en vous assurant que la bonne propriété du groupe est appliquée lorsque vous créez de nouveaux fichiers, et en permettant ainsi à vos collègues de ce groupe de projet d'accéder à ces fichiers?
L'utilisation principale est de conserver le propriétaire du groupe d'une arborescence de fichiers:
[lockie@bubbles tmp]$ mkdir dir1 && touch dir1/file && mkdir dir1/dir
[lockie@bubbles tmp]$ mkdir dir2 && chgrp staff dir2 && chmod 2755 dir2 && touch dir2/file && mkdir dir2/dir
[lockie@bubbles tmp]$ ls -al dir1
total 32
drwxrwxr-x 3 lockie lockie 4096 Dec 13 19:32 .
drwxrwxrwt 125 root root 20480 Dec 13 19:32 ..
drwxrwxr-x 2 lockie lockie 4096 Dec 13 19:32 dir
-rw-rw-r-- 1 lockie lockie 0 Dec 13 19:32 file
[lockie@bubbles tmp]$ ls -al dir2
total 32
drwxr-sr-x 3 lockie staff 4096 Dec 13 19:32 .
drwxrwxrwt 125 root root 20480 Dec 13 19:32 ..
drwxrwsr-x 2 lockie staff 4096 Dec 13 19:32 dir < note new dir is g+s, owned by "staff" group, so the setgid behaviour acts recursively
-rw-rw-r-- 1 lockie staff 0 Dec 13 19:32 file < note new file is owned by "staff" group
[lockie@bubbles tmp]$
Cela a tendance à être utile dans des environnements où différents utilisateurs créeront / modifieront des fichiers / répertoires sous un répertoire: lorsque tous les fichiers / répertoires partagent le même groupe, tous les utilisateurs peuvent modifier / modifier les fichiers / répertoires (si les autorisations le permettent): cela évite les situations comme "xyz possède le fichier abc, donc je ne peux pas le modifier".
Une alternative à l'utilisation de setgid de cette manière est l' option de montage du système de fichiers grpid .
Depuis l'homme:
grpid ou bsdgroups / nogrpid ou sysvgroups
Ces options définissent l'ID de groupe qu'un fichier nouvellement créé obtient. Lorsque grpid est défini, il prend l'ID de groupe du répertoire dans lequel il est créé; sinon (par défaut), il prend le fsgid du processus en cours, sauf si le répertoire a le bit setgid défini, auquel cas il prend le gid du répertoire parent et obtient également le bit setgid s'il s'agit d'un répertoire lui-même.
Lorsqu'ils sont activés, les fichiers / répertoires créés sur un système de fichiers monté grpid héritent également du groupe du répertoire parent:
[lockie@bubbles ~]$ mount | grep /home
/dev/mapper/VolGroup00-home on /home type ext3 (rw,grpid)
[lockie@bubbles ~]$ mkdir dir3 && touch dir3/file && mkdir dir3/dir
[lockie@bubbles ~]$ ls -al dir3
total 12
drwxrwxr-x 3 lockie users 4096 Dec 13 19:37 .
drwxrwxr-x 12 lockie users 4096 Dec 13 19:37 ..
drwxrwxr-x 2 lockie users 4096 Dec 13 19:37 dir < inherited "users" group from parent dir
-rw-rw-r-- 1 lockie users 0 Dec 13 19:37 file < inherited "users" group from parent dir
[lockie@bubbles ~]$
J'ai trouvé que l'utilisation de l' option grpid réduit de manière appropriée le risque d'erreur humaine (puisque le système de fichiers fait le travail, indépendamment des autorisations dir).