Drei Gruppen, drei Rechte
Jede Datei unter Linux gehört einem Benutzer und einer Gruppe. Für drei Kategorien werden Rechte vergeben: den Eigentümer, die Gruppe und alle anderen. Und es gibt genau drei Rechte:
- r (read) — lesen, Wert 4
- w (write) — schreiben, Wert 2
- x (execute) — ausführen, Wert 1
Die Zahlen werden addiert. 7 bedeutet also 4+2+1, also alles. 6 heißt lesen und schreiben, 5 lesen und ausführen.
Die drei Ziffern lesen
Bei chmod 644 datei.txt gilt:
- Erste 6 — der Eigentümer darf lesen und schreiben
- Zweite 4 — die Gruppe darf nur lesen
- Dritte 4 — alle anderen dürfen nur lesen
Warum Verzeichnisse 755 brauchen
Bei Verzeichnissen bedeutet x nicht ausführen, sondern betreten. Ohne dieses Recht kommt niemand hinein, selbst wenn er Leserechte hat. Deshalb die Faustregel:
- Dateien: 644 — Eigentümer schreibt, der Rest liest
- Verzeichnisse: 755 — alle dürfen hinein, nur der Eigentümer darf etwas ablegen
Rekursiv, aber richtig
Der Klassiker unter den Fehlern ist chmod -R 777 auf ein Webverzeichnis, weil irgendetwas nicht ging. Damit darf jeder alles — auch der Angreifer, der eine Lücke im Skript gefunden hat. Wenn schon rekursiv, dann getrennt nach Typ:
find /var/www/meine-seite -type d -exec chmod 755 {} \;
find /var/www/meine-seite -type f -exec chmod 644 {} \;
chown: wem gehört die Datei?
Rechte allein reichen nicht, der Eigentümer muss stimmen. Ein Webserver läuft meist als www-data. Gehören die Dateien root, kann der Webserver zwar lesen, aber nichts hochladen:
chown -R www-data:www-data /var/www/meine-seite
Wenn etwas nicht funktioniert
Schau zuerst nach, wie es aktuell aussieht:
ls -la /var/www/meine-seite
Die erste Spalte zeigt die Rechte im Buchstabenformat, danach folgen Eigentümer und Gruppe. Meistens liegt das Problem nicht bei den Rechten, sondern beim Eigentümer — oder bei einem Elternverzeichnis, das nicht betreten werden darf.
Der Sonderfall SSH
SSH ist bei Rechten kompromisslos: Ist ~/.ssh nicht auf 700 und der private Schlüssel nicht auf 600, verweigert es kommentarlos den Dienst. Das ist keine Schikane, sondern Absicht — ein für andere lesbarer privater Schlüssel ist wertlos.