Řešení 1:
I když soubor/binární soubor setgid nemusí být zjevně užitečný, rozhodně považuji bit setgid za velmi užitečný aplikovaný na adresáře. Za předpokladu, že jste součástí různých pracovních skupin, z nichž každá má své vlastní unixové (povolovací) skupiny. Určitě byste pak chtěli umístit bit setgid do složek projektu, abyste se ujistili, že při vytváření nových souborů bude použito správné vlastnictví skupiny, a tím umožníte svým kolegům v dané projektové skupině přístup k těmto souborům?
Řešení 2:
Hlavní použití je zachovat vlastníka skupiny stromu souborů:
[[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]$
To bývá užitečné v prostředích, kde různí uživatelé budou vytvářet/upravovat soubory/adresáře v adresáři:Když všechny soubory/adresáře sdílejí stejnou skupinu, všichni uživatelé mohou soubory/adresáře upravovat/měnit (povolují-li to oprávnění):Tím se vyhnete situacím jako například „xyz vlastní soubor abc, takže jej nemohu upravovat“.
Alternativou k použití setgid tímto způsobem je grpid možnost připojení souborového systému.
Z man mount:
grpid nebo bsdgroups / nogrpid nebo sysvgroups
Tyto možnosti definují, jaké ID skupiny získá nově vytvořený soubor. Když je grpid nastaven, převezme ID skupiny adresáře, ve kterém je vytvořen; jinak (výchozí) převezme fsgid aktuálního procesu, pokud adresář nemá nastavený bit setgid, v takovém případě převezme gid z nadřazeného adresáře a také získá nastavený bit setgid, pokud se jedná o samotný adresář.
Pokud je povoleno, soubory/adresáře vytvořené na souborovém systému připojeném pomocí grpid také zdědí skupinu nadřazeného adresáře:
[[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] ~]$
Našel jsem pomocí grpid volba vhodně snižuje možnost lidské chyby (protože souborový systém dělá práci bez ohledu na oprávnění dir).