Rights Management: chmod & chown (Artikel 283)
Beherrschung der Dateiberechtigungen unter Linux. Erfahren Sie alles über das User-Group-Others Modell, oktale vs. symbolische Notation und den Einsatz von Special-Bits wie SUID und Sticky-Bit.
# Rights Management Mastery: Wer darf was?
TL;DR / Management Summary Berechtigungen sind das Immunsystem von Linux. Ein Fehler bei chmod (Berechtigungen) oder chown (Besitzverhältnisse) kann das System unbootbar machen oder Tür und Tor für Hacker öffnen. In diesem Modul lernen wir das UGO-Modell (User, Group, Others), beherrschen die oktale Schreibweise (755, 644) und verstehen die gefährlichen, aber nützlichen Special Bits wie SUID und das Sticky-Bit.
# 1. Einführung & Architektur
Das UGO-Modell.
Jede Datei hat drei Ebenen von Berechtigungen:
- U (User/Owner): Der Besitzer der Datei.
- G (Group): Die Gruppe, der die Datei gehört.
- O (Others): Alle anderen Benutzer im System.
# Die Berechtigungs-Matrix (Mermaid)
graph TD
A[File / Directory] --> B[User rwx]
A --> C[Group rwx]
A --> D[Others rwx]
B --> B1[4: Read]
B --> B2[2: Write]
B --> B3[1: Execute]
subgraph "Special Bits"
E[SUID: Execute as Owner]
F[SGID: Inherit Group]
G[Sticky Bit: Delete Protection]
end
# 2. chmod: Berechtigungen ändern
Oktal vs. Symbolisch.
# Die oktale Methode (Schnell & Präzise)
- 7 (4+2+1): Vollzugriff.
- 6 (4+2): Lesen & Schreiben.
- 5 (4+1): Lesen & Ausführen.
- 4: Nur Lesen.
# Standard für Skripte (rwxr-xr-x)
chmod 755 script.sh
# Standard für Configs (rw-r--r--)
chmod 644 config.txt
# Die symbolische Methode (Flexibel)
# Füge Execute-Rechte für die Gruppe hinzu
chmod g+x binary
# Entziehe Schreibrechte für 'Others'
chmod o-w data.log
# 3. chown: Besitzverhältnisse regeln
Wer ist der Herr im Haus?
Nur Root kann den Besitzer einer Datei ändern.
# chown <user>:<group> <file>
sudo chown www-data:www-data /var/www/html/index.php
# Rekursiv für ganze Verzeichnisse
sudo chown -R admin:it-team /opt/mytool
# 4. Day-2 Operations: Special Bits
Fortgeschrittene Sicherheit.
# 1. Sticky Bit (Verzeichnisschutz)
Verhindert, dass Benutzer Dateien löschen, die ihnen nicht gehören (Standard für /tmp).
chmod +t /shared_folder
# 2. SUID (Set User ID)
Ein Programm läuft mit den Rechten des Besitzers (meist Root), egal wer es startet (Beispiel: passwd).
chmod u+s /usr/bin/special_tool
Gefahr: SUID-Bit auf eigenen Skripten ist ein massives Sicherheitsrisiko (Privilege Escalation)!
# 5. Troubleshooting & “War Stories”
Wenn die Rechte im Weg stehen.
# Story 1: “Der Webserver-Lockout”
Symptom: PHP-Skripte können keine Bilder in /uploads speichern, obwohl der Ordner 777 (unsauber!) hat.
Ursache: Das übergeordnete Verzeichnis verbietet dem Webserver-User den Zugriff, oder SELinux blockiert (siehe Artikel 095).
Lösung: Prüfen Sie die gesamte Pfad-Kette. Ein Verzeichnis braucht mindestens das x (Execute) Recht, damit ein User hineinwechseln kann.
# Story 2: “Das verschwundene S-Bit”
Symptom: Ein Admin kopiert ein Binary mit cp. Danach funktioniert das Programm nicht mehr korrekt (z.B. Zugriff auf Hardware scheitert).
Ursache: Ein normaler cp Befehl kopiert keine Special-Bits (SUID/SGID) oder Metadaten.
Lösung: Nutzen Sie cp -p (preserve) oder rsync -a, um Berechtigungen und Special-Bits exakt zu übernehmen.
# 6. Fazit & Empfehlung
- Minimalismus: Vergeben Sie niemals mehr Rechte als nötig. Vermeiden Sie
777. - Wartung: Nutzen Sie
find / -perm /4000regelmäßig, um alle SUID-Programme im System zu finden und zu auditieren. - Wahl: Nutzen Sie die oktale Schreibweise in Skripten, da sie eindeutiger ist.
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| Berechtigungen sehen | ls -l |
| Alles für alle | chmod 777 (Gefährlich!) |
| Nur Owner darf alles | chmod 700 |
| Nur lesen für alle | chmod 444 |
| SUID setzen | chmod 4755 |
| SGID setzen | chmod 2755 |
| Sticky Bit setzen | chmod 1755 |
| Besitzer ändern | chown <user> <file> |
| Gruppe ändern | chgrp <group> <file> |
| Default Rechte (Mask) | umask 022 |