Solution 1 :
Bien qu'un fichier/binaire setgid puisse ne pas être évidemment utile, je trouve définitivement le bit setgid très utile appliqué sur les répertoires. En supposant que vous faites partie de différents groupes de travail, chacun ayant ses propres groupes unix (autorisation). Vous voudriez sûrement alors mettre le bit setgid sur les dossiers de projet, en vous assurant que la bonne propriété de groupe est appliquée lorsque vous créez de nouveaux fichiers, et ainsi permettre à vos collègues de ce groupe de projet d'accéder à ces fichiers ?
Solution 2 :
L'utilisation principale est de conserver le groupe propriétaire d'une arborescence de fichiers :
[[email protected] tmp]$ mkdir dir1 && touch dir1/file && mkdir dir1/dir
[[email protected] tmp]$ mkdir dir2 && chgrp staff dir2 && chmod 2755 dir2 && touch dir2/file && mkdir dir2/dir
[[email protected] 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
[[email protected] 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
[[email protected] tmp]$
Cela a tendance à être utile dans les 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 des 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 le grpid option de montage du système de fichiers.
De la monture humaine :
grpid ou bsdgroups / nogrpid ou sysvgroups
Ces options définissent l'identifiant de groupe qu'un fichier nouvellement créé obtient. Lorsque grpid est défini, il prend l'identifiant de groupe du répertoire dans lequel il est créé ; sinon (par défaut), il prend le fsgid du processus actuel, à moins que le répertoire ait le bit setgid défini, auquel cas il prend le gid du répertoire parent et obtient également le bit setgid défini s'il s'agit d'un répertoire lui-même.
Lorsqu'il est activé, les fichiers/répertoires créés sur un système de fichiers monté grpid héritent également du groupe du répertoire parent :
[[email protected] ~]$ mount | grep /home
/dev/mapper/VolGroup00-home on /home type ext3 (rw,grpid)
[[email protected] ~]$ mkdir dir3 && touch dir3/file && mkdir dir3/dir
[[email protected] ~]$ 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
[[email protected] ~]$
J'ai trouvé en utilisant grpid L'option réduit de manière appropriée le risque d'erreur humaine (puisque le système de fichiers fait le travail, quelles que soient les autorisations du répertoire).