Alles über Linux-Dateiberechtigungen und chmod
Berechtigungen legen fest, welche Nutzer Dateien lesen, schreiben oder ausführen dürfen. Wichtig ist, dass nur die wirklich nötigen Nutzer Zugriff haben, damit dein System sicher und stabil bleibt.
Was sind Dateiberechtigungen?
Berechtigungen steuern, wer auf einem Linux-System eine Datei oder einen Ordner lesen, schreiben oder ausführen darf. Sie schützen deine Daten, verhindern unerwünschte Änderungen und stellen sicher, dass Programme nur wie vorgesehen laufen. Berechtigungen sind ein Grundpfeiler der Linux-Sicherheit — ohne sie könnte jeder Systemdateien ändern oder deine privaten Daten lesen. Gesetzt werden sie mit dem Befehl chmod, den wir unten im Detail erklären.Benutzertypen
In Linux gelten Berechtigungen getrennt für drei Nutzerkategorien:
Besitzer
Meist die Person, die die Datei erstellt oder besitzt.
Gruppe
Andere Nutzer, die Mitglied der Datei-Gruppe sind.
Andere
Alle übrigen im System, die weder Besitzer sind noch zur Gruppe gehören.
Arten von Berechtigungen
Lesen (r)
Dateiinhalt ansehen oder Dateien in einem Ordner auflisten.
Schreiben (w)
Eine Datei ändern oder Dateien in einem Ordner hinzufügen/entfernen.
Ausführen (x)
Eine Datei als Programm starten oder einen Ordner betreten.
Der Befehl chmod
chmod steht für „change mode“. Er ändert die Berechtigungen einer Datei oder eines Ordners.Du kannst ihn in symbolischer Form (Buchstaben wie rwx) oder numerisch (Oktalzahlen wie 777) verwenden.Funktioniert für einzelne Dateien oder ganze Ordner.Symbolische Darstellung
Die erste Möglichkeit ist der symbolische Modus, der Buchstaben für jeden Benutzertyp nutzt. Das ist leichter zu merken, zu lesen und zu verstehen, aber ausführlicher als Oktal. r steht für Lesen, w für Schreiben, x für Ausführen. Ersetzt ein Bindestrich (-) einen Buchstaben, ist diese Berechtigung nicht gewährt.
Oktale (numerische) Darstellung
Der oktale Modus nutzt Zahlen für Berechtigungen. Dabei gilt: Lesen = 4, Schreiben = 2, Ausführen = 1. Diese werden addiert; im Beispiel ergibt das 7, was Lesen, Schreiben und Ausführen bedeutet. Wie zuvor ist die Reihenfolge Besitzer, Gruppe, Andere. 755 bedeutet also: Besitzer rwx (7), Gruppe rx (5) und Andere rx (5).
Wenn dir die Zahlen zufällig erscheinen: Sie werden wie Binärzahlen berechnet. 111 (rwx) ist 7, 101 (r-x) ist 5 und 100 (r--) ist 4.

Eine einzelne Berechtigung ändern
Oft willst du nicht alle Berechtigungen eines Objekts ändern, sondern nur einen Teil. Zum Beispiel Ausführen nur für den Besitzer hinzufügen, Schreiben für die Öffentlichkeit entfernen oder die Gruppe auf Nur-Lesen setzen. Das geht im symbolischen Modus mit den Operatoren `+`, `-` oder `=`, im Format `chmod [wer][operator][berechtigung] datei`. Dabei kann `wer` `u` (Besitzer), `g` (Gruppe), `o` (Andere) oder `a` (alle) sein. `operator` ist `+` (hinzufügen), `-` (entfernen) oder `=` (genau setzen). Beispiel: `chmod g-w file.txt` entfernt dem Gruppe-Eintrag das Schreibrecht.

Berechtigungen rekursiv ändern
Mit der Option `-R` änderst du die Berechtigungen aller Dateien und Ordner in einem Verzeichnis. Beispiel: `chmod -R 755 /var/www` setzt 755 für alles unter /var/www. Sei vorsichtig: Rekursive Änderungen können bei falscher Nutzung Systemdateien beschädigen.Besitz und chmod
Berechtigungen wirken zusammen mit dem Besitz. Jede Datei hat einen Besitzer und eine Gruppe.
Wenn du den Besitzer ändern musst, nutze `chown`.
Beispiel: `sudo chown user:group file.txt` ändert Besitzer und Gruppe.
Spezialbits
Neben Lesen/Schreiben/Ausführen gibt es spezielle Berechtigungs-Bits:
Setuid (4)
Führt die Datei mit den Rechten des Besitzers statt des aufrufenden Nutzers aus.
Setgid (2)
Führt die Datei mit den Rechten der Gruppe aus. In Verzeichnissen erben neue Dateien die Gruppe.
Sticky (1)
Verhindert in Verzeichnissen, dass Nutzer fremde Dateien löschen. Häufig in /tmp.
Häufige chmod-Voreinstellungen
Hier sind gängige Berechtigungssätze und wofür sie gedacht sind:
| Octal | Meaning |
|---|---|
| 600 | Besitzer darf lesen/schreiben. Kein Zugriff für andere. SSH-Private Keys. |
| 644 | Besitzer darf lesen/schreiben. Andere dürfen lesen. Standard für viele Dateien. |
| 700 | Besitzer hat Vollzugriff. Kein Zugriff für andere. Private Skripte. |
| 755 | Besitzer darf lesen/schreiben/ausführen. Andere dürfen lesen/ausführen. Häufig für Skripte. |
| 777 | Alle dürfen lesen/schreiben/ausführen. Vermeiden, außer für temporäre gemeinsame Ordner. |

Fehlerbehebung bei Dateiberechtigungen
Wenn etwas nicht klappt, siehst du vielleicht diese Fehler:
- Permission denied - Prüfe, ob du Ausführrechte auf Dateien oder Leserechte auf Ordnern hast. Ergänze mit `chmod +x datei` oder `chmod +r ordner`.
- Operation not permitted - Du brauchst eventuell `sudo`, um systemeigene Dateien zu ändern.
- Read-only file system - Das Dateisystem ist nur lesbar eingehängt. Mit Schreibrechten erneut einhängen oder Admin kontaktieren.
- Cannot open file: No such file or directory - Der Pfad ist eventuell falsch. Prüfe mit `ls`.
Sicherheitstipps
- Mach eine Datei nur dann ausführbar, wenn sie wirklich laufen muss.
- Nutze 600 für private Dateien und 644 für öffentlich lesbare Dateien.
- Vermeide 777, außer es ist unbedingt nötig.
- Prüfe Berechtigungen mit `ls -l`, bevor du sie änderst.
- Teste Änderungen zuerst an unkritischen Dateien.