Setgid
# Setgid

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 neben den Rechten des ausführenden Benutzers zusätzlich mit den Rechten der Gruppe, welcher das Programm gehört, ausgefü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).

## Setzen des SGID-Bits

Mit klassischen Unix-Kommandos wie chmod kann das Bit mit einem Aufruf wie

    chmod g+s objekt

gesetzt werden, wobei objekt für mindestens eine Datei bzw. Verzeichnis steht.

Auch moderne Dateimanager 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 auf die erste Ziffer das gesetzte Setgid-Bit. Eine Datei mit den Rechten 0755 (in Oktalschreibweise) hat nach Setzen des Setgid-Bits die Rechte 2755. 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, indem an der Stelle, die die Gruppenausführbarkeit repräsentiert, statt x ein s und statt - ein S steht. So wird aus rwxr-xr-x nach Setzen des Setgid-Bits rwxr-sr-x, aus rw-r--r-- hingegen rw-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.

## Beispiel

Zunächst ohne SGID-Bit:

(Hinweis zur Bedeutung der Spalten von links nach rechts: Rechte, Besitzer, Gruppe, Datum, Name.) Werden hier neue Dateien angelegt, wird die primäre Gruppe des gerade angemeldeten Benutzers als Gruppe für eine neue Datei gesetzt.

Ist Hr. Maier aber auch Mitglied von abteilung2, können Dateien, die von Hr. Maier erstellt wurden, nicht mehr von den Kollegen aus abteilung2 gelesen werden, da die primäre Gruppe auf abteilung1 gesetzt bleibt.

Wenn man aber das SGID-Bit auf die übergeordneten Verzeichnisse setzt, wird die Gruppe vererbt. Dadurch ist es möglich, verschiedene Abteilungen zu verwalten, ohne auf komplexe ACLs angewiesen zu sein oder Berechtigungen für jedermann vergeben zu müssen.

(Dieses Kommando sucht nach allen Verzeichnissen und setzt das SGID-Bit)

Wird jetzt eine Datei von Hr. Maier in abteilung2 erstellt, kann diese jetzt auch von den anderen Mitgliedern der abteilung2 bearbeitet werden:

## Sicherheitsaspekt

Obwohl in vielen Situationen sehr nützlich, kann das Setgid-Bit (ähnlich dem Setuid-Bit) ein hohes Sicherheitsrisiko bedeuten, wenn bei Programmen Setgid gesetzt wird, die unsicher programmiert sind.

