- Set-gid-bit
-
Setgid (Set Group ID, manchmal auch SGID) ist ein (erweitertes) Unix-Dateirecht für Dateien oder Verzeichnisse des Unix-Betriebssystems. Ausführbare Programme bei denen dieses Bit gesetzt ist, werden beim angemeldeten Benutzer mit den Rechten der Gruppe ausgeführt, der die Datei gehört, anstatt mit den Rechten derjenigen Gruppe, die die Datei ausführt.
Auf manchen Systemen bewirkt das Setgid-Bit bei einem Verzeichnis, dass darin neu angelegte Dateien oder Unterverzeichnisse der Gruppe angehören, der auch das Verzeichnis angehört (statt der Gruppe, zu der der erstellende Benutzer gehört).
Inhaltsverzeichnis
Setzen des SGID-Bits
Mit klassischen Unix-Kommandos wie
chmod
kann das Bit mit einem Aufruf wiechmod g+s objekt
gesetzt werden, wobei objekt für mindestens eine Datei bzw. Verzeichnis steht.
Auch moderne grafische Dateibrowser bieten Möglichkeiten, das Bit graphisch per Checkbox zu aktivieren/deaktivieren.
Notation/Anzeige des Bits
In der erweiterten Oktalnotation, die sich vier Oktalziffern bedient, repräsentiert die Addition des Wertes
2
das gesetzte Setgid-Bit. Eine Datei mit den Rechten0755
(in Oktalschreibweise) hat nach Setzen des Setgid-Bits die Rechte2755
. Diese Darstellung ist offensichtlich unabhängig davon, ob die Datei für die Gruppe ausführbar ist.Die symbolische Rechtenotation hingegen unterscheidet zwischen gesetztem SGID-Bit, in dem an der Stelle, die die Gruppenausführbarkeit repräsentiert, statt
x
eins
und statt-
einS
steht. So wird ausrwxr-xr-x
nach Setzen des Setgid-Bitsrwxr-sr-x
, ausrw-r--r--
hingegenrw-r-Sr--
.Wirkung des gesetzten Bits auf Verzeichnisse
Da Verzeichnisse nicht im herkömmlichen Sinne ausgeführt (executed) werden können, hat das SGID-Bit hier eine besondere Bedeutung. Setzt man hier nämlich das SGID-Bit, werden die Gruppen in den Unterverzeichnissen vererbt.
Das SGID-Bit stellt in dieser Konfiguration kein Sicherheitsrisiko dar, solange es nicht auf Dateien angewendet wird. Dasselbe funktioniert auch mit dem SUID-Bit, nur wird hier der Besitzer vererbt.
Beispiel
# ls -l /data/fileshare drwxrwx--- admin abteilung1 1994-05-23 daten_abteilung1 drwxrwx--- admin abteilung2 1994-05-23 daten_abteilung2 drwxrwx--- admin abteilung3 1994-05-23 daten_abteilung3
Werden hier neue Dateien angelegt wird die primäre gruppe des gerade angemeldeten Benutzers als Gruppe für eine neue Datei gesetzt.
# ls -l /data/fileshare/daten_abteilung1 -rw-rw---- mueller abteilung1 1994-05-23 datei1.txt -rw-rw---- wieser abteilung1 1994-05-23 datei2.txt -rw-rw---- maier abteilung1 1994-05-23 datei3.png
Ist Hr. Maier aber auch mitglied von abteilung2 , können daten die von Hr. Maier erstellt wurden nicht mehr von den Kollegen aus abteilung2 gelesen werden, da die primäre Gruppe auf abteilung1 gesetzt bleibt.
# ls -l /data/fileshare/daten_abteilung2 -rw-rw---- maier abteilung1 1994-05-23 maiers_datei.txt -rw-rw---- berger abteilung2 1994-05-23 datei2.txt -rw-rw---- berger abteilung2 1994-05-23 datei3.txt
Wenn man aber das SGID-Bit auf die übergeordneten Verzeichnisse setzt wird die Gruppe vererbt und man kann ohne komplexe ACLs zu verwenden oder Berechtigungen für "jedermann" zu vergeben verschiedene Abteilungen auf einen Fileserver/Freigabe verwalten.
# find /data/fileshare/* -type d -exec chmod 2770 {} \; (Dieses Kommando sucht nach allen Verzeichnissen und setzt das SGID-Bit)
Wird jetzt eine Datei von Hr. Maier in abteilung2 erstellt,
#maier$ touch /data/fileshare/daten_abteilung2/maiers_datei.txt
kann diese jetzt auch von den anderen Mitgliedern der abteilung2 bearbeitet werden.
# ls -l /data/fileshare drwxrws--- admin abteilung1 1994-05-23 daten_abteilung1 drwxrws--- admin abteilung2 1994-05-23 daten_abteilung2 drwxrws--- admin abteilung3 1994-05-23 daten_abteilung3
# ls -l /data/fileshare/daten_abteilung2 -rw-rw---- maier abteilung2 1994-05-23 maiers_datei.txt -rw-rw---- berger abteilung2 1994-05-23 datei2.txt -rw-rw---- berger abteilung2 1994-05-23 datei3.txt
Sicherheitsaspekt
Obwohl in vielen Situationen sehr nützlich, kann das Setgid-Bit (ähnlich dem Setuid-Bit) ein hohes Sicherheitsrisiko bedeuten, wenn Programme Setgid gesetzt werden, die unsicher programmiert sind.
Siehe auch
- Unix-Dateirechte
- Weitere erweiterte Dateirechte: setuid, Sticky Bit
Wikimedia Foundation.