Special Permissions in Linux: SUID, SGID & Sticky Bit

Inhaltsverzeichnis

Warum du Special Permissions kennen solltest

Neben den klassischen rwx-Berechtigungen gibt es in Linux drei besondere Bits: SUID, SGID und das Sticky Bit. Diese Special Permissions lösen typische Probleme in Mehrbenutzersystemen:

  • Programme brauchen temporär höhere Rechte,
  • Teams arbeiten gemeinsam in Verzeichnissen, und
  • trotzdem soll nicht jeder alles löschen können.

Für die RHCSA-Prüfung gehört das Verständnis dieser Mechanismen klar zum Bereich „Dateiberechtigungen verwalten“ – und in der Praxis helfen sie dir, dein System sicher und gleichzeitig nutzbar zu halten.

SUID – ausführen mit den Rechten des Besitzers

SUID (Set User ID) sorgt dafür, dass ein ausführbares Programm mit den Rechten des Dateibesitzers läuft, nicht mit den Rechten des aufrufenden Users. In der Ausgabe von ls -l erkennst du SUID daran, dass im User-Ausführungsbit ein s statt x steht, zum Beispiel rwsr-xr-x; in der oktalen Notation entspricht das einer führenden 4, etwa 4755.

Du nutzt SUID vor allem auf Programmen, die intern Aktionen mit höheren Rechten ausführen müssen, obwohl sie von normalen Usern gestartet werden. Ein typisches Beispiel sind Programme zur Passwortänderung, die auf geschützte Dateien zugreifen müssen, die nur von root gelesen werden dürfen. Das Programm selbst ist sorgfältig geschrieben und geprüft, damit der erhöhte Zugriff nur für die vorgesehenen Funktionen genutzt wird.​

SUID setzen und entfernen

# SUID setzen (symbolisch)
chmod u+s /usr/local/bin/meinprog

# SUID entfernen (symbolisch)
chmod u-s /usr/local/bin/meinprog

- - - 

# SUID zusätzlich zu 755 setzen (oktale Schreibweise, ausführbares Programm)
chmod 4755 /usr/local/bin/meinprog

# SUID entfernen (oktale Schreibweise, ausführbares Programm)
chmod 0755 /usr/local/bin/meinprog

SGID – Gruppenrechte und Team-Verzeichnisse

SGID (Set Group ID) wirkt je nach Einsatz auf Dateien und auf Verzeichnisse unterschiedlich. Auf einer ausführbaren Datei führt SGID dazu, dass das Programm mit der Gruppen-ID der Datei läuft, statt mit der primären Gruppe des Users, der es startet. Das ist interessant, wenn eine Anwendung auf gemeinsame Ressourcen einer bestimmten Gruppe zugreifen soll.

Auf Verzeichnissen ist SGID besonders wichtig: Alle neu angelegten Dateien darin erben automatisch die Gruppe des Verzeichnisses, nicht die primäre Gruppe des Users. So stellst du sicher, dass ein Projektordner wie /srv/projects/devteam immer Dateien mit der Gruppe devteam enthält, egal welcher User aus dem Team sie erstellt. In ls -ld erkennst du SGID am s im Gruppen-Ausführungsbit, zum Beispiel drwxrwsr-x; in der oktalen Schreibweise entspricht das einer führenden 2, etwa 2775.

# SGID setzen (symbolisch)
chmod g+s /srv/projects/devteam

# SGID entfernen (symbolisch)
chmod g-s /srv/projects/devteam

- - -

# SGID zusätzlich zu 775 setzen (oktale Schreibweise, Verzeichnis mit Gruppen-Schreibrechten)
chmod 2775 /srv/projects/devteam

# SGID entfernen (oktale Schreibweise, Verzeichnis mit Gruppen-Schreibrechten)
chmod 0775 /srv/projects/devteam

Sticky Bit – Schutz in gemeinsamen Verzeichnissen

Das Sticky Bit spielt seine Rolle heute fast ausschließlich auf Verzeichnissen. In einem Ordner, in dem viele User Schreibrechte haben, würdest du ohne Sticky Bit riskieren, dass Nutzer gegenseitig Dateien löschen oder umbenennen können. Mit gesetztem Sticky Bit dürfen Dateien darin nur vom Dateieigentümer, vom Verzeichnis-Eigentümer oder von root gelöscht bzw. umbenannt werden.

Das bekannteste Beispiel ist /tmp: Jeder darf dort Dateien anlegen, aber nicht einfach fremde Dateien entfernen. In ls -ld erkennst du das Sticky Bit am t in den „others“-Rechten, etwa drwxrwxrwt. In der oktalen Notation setzt du das Sticky Bit mit einer führenden 1, zum Beispiel 1777 für ein typisches globales Schreibverzeichnis.

# Sticky Bit setzen (symbolisch)
chmod +t /srv/shared/upload

# Sticky Bit entfernen (symbolisch)
chmod -t /srv/shared/upload

- - - 

# Sticky Bit zusätzlich zu 777 setzen (oktale Schreibweise, öffentliches Verzeichnis)
chmod 1777 /srv/shared/upload

# Sticky Bit entfernen (oktale Schreibweise, öffentliches Verzeichnis)
chmod 0777 /srv/shared/upload

Kombinierte Beispiele:

# SUID und SGID setzen (symbolisch)
chmod u+s,g+s /usr/local/sbin/admin-tool

# SUID und SGID entfernen (symbolisch)
chmod u-s,g-s /usr/local/sbin/admin-tool

- - - 

# SUID und SGID zusätzlich zu 750 setzen (oktale Schreibweise)
chmod 6750 /usr/local/sbin/admin-tool

# SUID und SGID entfernen (zurück auf 750,. oktale Schreibweise)
chmod 0750 /usr/local/sbin/admin-tool

- - - 

# SGID und Sticky Bit setzen (symbolisch) auf Team-Verzeichnis
chmod g+s,+t /srv/data/teamspace

# SGID und Sticky Bit entfernen (symbolisch)
chmod g-s,-t /srv/data/teamspace

- - - 

# SGID und Sticky Bit zusätzlich zu 770 setzen (oktale Schreibweise)
chmod 3770 /srv/data/teamspace

# SGID und Sticky Bit entfernen (zurück auf 770, oktale Schreibweise)
chmod 0770 /srv/data/teamspace

Zusammenfassung

SUID sorgt dafür, dass Programme mit den Rechten ihres Besitzers laufen, SGID hält Gruppenzugehörigkeiten in Team-Verzeichnissen konsistent, und das Sticky Bit verhindert, dass Nutzer in gemeinsamen Ordnern fremde Dateien löschen. Diese Special Permissions ergänzen das normale rwx-Modell um wichtige Sicherheits- und Kollaborationsfunktionen, die du als angehender RHCSA unbedingt verstehen solltest.

Schreibe einen Kommentar

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

Andreas Moor
Andreas Moor
@blog@andreas-moor.de

Hallo Fediverse, ich bin Andy!

Hier und auf meiner Website findest du mein akkumuliertes Linux-Sysadmin-Wissen, meine kleinen und größeren Projekte und die Tools, die ich nutze.

Viel Spaß beim stöbern, lesen und lernen! 🧑‍💻

217 Beiträge
10 Folgende