Berechtigungen unter Linux mit SUID, GUID und Sticky-Bit

Denkt man an Zugriffsberechigungen unter unixoiden Betriebssystemen kommen einem zuerst das klassische Rechtesystem in den Sinn, also die Verteilung von Rechten auf:

  • Eigentümer (user)
  • Gruppe (group)
  • Alle anderen (world/other)

Hier gibt es drei Rechte die Vergeben werden können, sich aber auf Dateien und Verzeichnisse unterschiedlich auswirken.

  • read (oktal = 4)
  • write (oktal = 2)
  • execute (oktal = 1)

Unterschiede zwischen Verzeichnissen und Dateien

Recht Bedeutung für eine Datei Bedeutung für ein Verzeichnis
 r Inhalt ansehen Inhalt des Verz. auflisten
 w Inhalt verändern Dateien in Verz. anlegen, löschen, umbenennen
 x Binärdatei/Script ausführen In das Verzeichnis wechseln (mit cd)

Doch nicht immer reicht dieses Rechtesystem nicht aus. Hier kommen SUID, SGID und Sticky-Bit ins Spiel.

SUID-Bit (Set-User-ID-Bit)

Das SUID-Bit wird mit folgendem Befehl gesetzt:

chmod u+s dateiname

Bedeutung des SUID-Bit für eine Datei

Ist das SUID-Bit auf eine Datei gesetzt (z.B. -rwsr-xr-x), insbesondere ein Programm, so wird das Programm auch von unprivilegierten Benutzern mit den Rechten des Besitzers ausgeführt (z.B. root). Hierfür muss die Datei auch für unprivilegierte Benutzer ausführbar sein.

Unter Linux ist dieses Bit beispielsweise bei dem Programm passwd gesetzt, damit jeder Systembenutzer bzw. das Programm das gehashte Passwort in die Datei /etc/passwd schreiben kann, welche nur von root beschreibbar ist.

Bedeutung des SUID-Bit für ein Verzeichnis

Ist das SUID-Bit auf ein Verzeichnis gesetzt, werden die User-Besitzrechte des Verzeichnisses auf darunter angelegte Dateien und Verzeichnisse vererbt. Alle Dateien, die in diesem Verzeichnis angelegt werden, gehören also nicht nicht dem Benutzer, der sie angelegt hat, sondern dem Besitzer des Verzeichnisses.

SGID-Bit (Set-Group-ID-Bit)

Das SGID-Bit wird mit folgendem Befehl gesetzt:

chmod g+s dateiname

Bedeutung des SGID-Bit für eine Datei

Ist das SGID-Bit auf eine Datei gesetzt (z.B. -rwxrwsr-x), so wird das Programm auch von unprivilegierten Benutzern mit den Rechten der besitzenden Gruppe ausgeführt. Hierfür muss die Datei auch für unprivilegierte Benutzer ausführbar sein. Damit kommt also auch ein Benutzer der nicht Mitglied einer Gruppe ist, in den Genuss der Privilegien eines Gruppenmitglieds.

Bedeutung des SGID-Bit für ein Verzeichnis

Ist das SGID-Bit auf ein Verzeichnis gesetzt, werden die Gruppen-Besitzrechte des Verzeichnisses auf darunter angelegte Dateien und Verzeichnisse vererbt. Alle Dateien und Verzeichnisse, die in diesem Verzeichnis angelegt werden gehören also nicht, wie üblich, der Hauptgruppe des Benutzers der sie angelegt hat, sondern der primären Gruppe des Besitzers des Verzeichnisses.

Sticky-Bit

Das Sticky-Bit wird mit folgendem Befehl gesetzt:

chmod o+s dateiname

Bedeutung für eine Datei

Ein gesetztes Sticky-Bit auf Dateien bzw. Programme unter Linux keine
Funktion.

Bedeutung für ein Verzeichnis

Das Sticky-Bit eignet sich zum Anlegen gemeinsam genutzter Verzeichnisse. Bestes Beispiel hierfür ist vermutlich das /tmp Verzeichnis unter Linux.

Ist das Sticky-Bit auf ein Verzeichnis gesetzt auf das alle Benutzer Schreib-, Lese- und Ausführungsrechte besitzen (z.B. drwxrwxrwt), kann darin nur der Besitzer einer Datei oder der Besitzer des Verzeichnisses und natürlich root Dateien und Verzeichnisse ändern oder löschen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.