Antworten:
Obwohl eine setgid-Datei / Binärdatei möglicherweise nicht offensichtlich nützlich ist, finde ich das setgid-Bit auf jeden Fall sehr nützlich, wenn es auf Verzeichnisse angewendet wird. Angenommen, Sie sind Teil verschiedener Arbeitsgruppen, von denen jede ihre eigenen Unix-Gruppen (Berechtigungsgruppen) hat. Sicherlich möchten Sie dann das setgid-Bit in Projektordner einfügen, um sicherzustellen, dass beim Erstellen neuer Dateien der richtige Gruppenbesitz angewendet wird, und damit Ihren Kollegen in dieser Projektgruppe Zugriff auf diese Dateien gewähren?
Die Hauptverwendung besteht darin, den Gruppenbesitzer eines Dateibaums beizubehalten:
[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]$
Dies ist in der Regel in Umgebungen nützlich, in denen verschiedene Benutzer Dateien / Verzeichnisse in einem Verzeichnis erstellen / bearbeiten: Wenn alle Dateien / Verzeichnisse dieselbe Gruppe verwenden, können alle Benutzer die Dateien / Verzeichnisse bearbeiten / ändern (sofern die Berechtigungen dies zulassen): Dadurch werden Situationen vermieden wie "xyz besitzt die Datei abc, daher kann ich sie nicht bearbeiten".
Eine Alternative zur Verwendung von setgid auf diese Weise ist die Mount-Option für das grpid- Dateisystem.
Vom Menschenberg:
grpid oder bsdgroups / nogrpid oder sysvgroups
Diese Optionen definieren, welche Gruppen-ID eine neu erstellte Datei erhält. Wenn grpid festgelegt ist, wird die Gruppen-ID des Verzeichnisses verwendet, in dem es erstellt wurde. Andernfalls (Standardeinstellung) wird die fsgid des aktuellen Prozesses verwendet, es sei denn, für das Verzeichnis ist das setgid-Bit gesetzt. In diesem Fall wird die gid aus dem übergeordneten Verzeichnis übernommen und das setgid-Bit wird auch gesetzt, wenn es sich um ein Verzeichnis selbst handelt.
Wenn diese Option aktiviert ist, erben Dateien / Verzeichnisse, die auf einem von grpid bereitgestellten Dateisystem erstellt wurden, auch die Gruppe des übergeordneten Verzeichnisses:
[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 ~]$
Ich habe festgestellt, dass die Verwendung der Option grpid die Wahrscheinlichkeit menschlicher Fehler angemessen verringert (da das Dateisystem die Arbeit unabhängig von den Verzeichnisberechtigungen ausführt ).