HandyTools Hub

← Alle Anleitungen

chmod und Linux-Dateiberechtigungen erklärt: Was 755, 644 und rwx wirklich bedeuten

2026-08-11

Jeder Entwickler, der je auf einen Linux-Server deployt hat, ist darauf gestoßen: Permission denied beim Ausführen eines Skripts, ein Webserver, der seine eigenen Dateien nicht lesen kann, oder der gut gemeinte Rat, es einfach mit chmod 777 zu lösen — was das Symptom behebt und zugleich ein Sicherheitsloch öffnet. Dateiberechtigungen sind einer der ältesten Teile von Unix, und ihr Modell ist klein genug, um dauerhaft in den Kopf zu passen. Diese Anleitung erklärt dieses Modell — für wen die drei Zeichen gelten, warum 755 bedeutet, was es bedeutet, und die Handvoll Regeln, die ein Mehrbenutzersystem sicher halten.

Die drei Fragen, die jede Datei beantwortet

Linux entscheidet den Zugriff mit drei Fragen, in Reihenfolge:

  1. Sind Sie der Eigentümer der Datei? Wenn ja, gelten die User-Berechtigungen.
  2. Sind Sie in der Gruppe der Datei? Wenn ja, gelten die Gruppen-Berechtigungen.
  3. Andernfalls gelten die Other-Berechtigungen (alle übrigen).

Die erste passende Frage gewinnt — die Prüfungen kombinieren sich nicht. Besitzen Sie eine Datei, aber die Eigentümer-Berechtigungen sagen „kein Lesen“, hilft es Ihnen nicht, in einer Gruppe zu sein, die sie lesen darf. Das stolpert Menschen ständig: dem Eigentümer den Zugriff zu nehmen, während man den Gruppenzugriff offen lässt, sperrt den Eigentümer effektiv aus.

Eigentümer und Gruppe sehen Sie bei jeder Datei mit ls -l:

-rwxr-xr-- 1 alice developers 4096 Aug 11 09:00 deploy.sh

Hier ist alice der Eigentümer, developers die Gruppe, und das führende -rwxr-xr-- ist die Berechtigungszeichenkette.

rwxr-xr— lesen: Die Berechtigungszeichenkette

Die zehn Zeichen nach dem Dateityp-Strich sind drei Tripel: Eigentümer, Gruppe, Andere. Jedes Tripel ist Lesen (r), Schreiben (w), Ausführen (x) — oder ein Strich, wo die Berechtigung fehlt. rwxr-xr-- dekodiert also als:

  • Eigentümer: rwx — Lesen, Schreiben, Ausführen
  • Gruppe: r-x — Lesen und Ausführen, kein Schreiben
  • Andere: r-- — nur Lesen

Ausführen bedeutet je nach Dateityp Verschiedenes. Bei einer regulären Datei heißt es „darf als Programm ausgeführt werden“. Bei einem Verzeichnis bedeutet x „darf hineingehen und auf Dateien darin zugreifen“, r „darf die Namen darin auflisten“, und w „darf Einträge erstellen, löschen oder umbenennen“. Deshalb verhält sich ein Verzeichnis, das Sie auflisten, aber nicht betreten können, so seltsam — r ohne x lässt Sie Namen sehen, aber nichts anfassen.

Oktalnotation: Warum 755 rwxr-xr-x ist

Jedes Tripel sind drei Bits, es passt also sauber auf eine Oktalziffer: Lesen = 4, Schreiben = 2, Ausführen = 1, innerhalb des Tripels summiert. rwx = 4+2+1 = 7, r-x = 4+1 = 5, r-- = 4 = 4. Die klassischen Kombinationen:

  • 755 (rwxr-xr-x) — Eigentümer darf alles, alle anderen dürfen lesen und ausführen. Der Standard für Skripte, Programme und Verzeichnisse.
  • 644 (rw-r--r--) — Eigentümer bearbeitet, alle lesen. Der Standard für Web-Inhalte, Konfigurationen und Quelldateien.
  • 600 (rw-------) — nur Eigentümer. Richtig für private Schlüssel, .env-Dateien, Zugangsdatenspeicher.
  • 700 (rwx------) — nur Eigentümer, ausführbar. Richtig für ~/.ssh und private Skriptverzeichnisse.

Wenn die Kombinationen mitten in der Aufgabe unklar werden, rechnet der chmod-Rechner zwischen Oktal und der rwx-Zeichenkette in beide Richtungen um und zeigt genau, wer was bekommt — viel schneller, als Bits im Kopf zu zählen.

Symbolischer Modus: Eine Sache ändern, ohne alles neu zu berechnen

Der Oktalmodus setzt alle neun Bits auf einmal. Der symbolische Modus ändert nur, was Sie benennen, mit who (u/g/o/a), einem Operator (+ hinzufügen, - entfernen, = exakt setzen) und den Berechtigungsbuchstaben:

chmod u+x deploy.sh      # für den Eigentümer ausführbar machen
chmod go-w config.ini    # Schreiben für Gruppe und Andere entfernen
chmod o= secrets.txt     # ALLE Berechtigungen für Andere entfernen
chmod -R u=rwX,go=rX site/   # rekursiv: Dateien 644, Verzeichnisse 755

Die letzte nutzt das bedingte X (Großbuchstabe): Es wendet Ausführen nur auf Verzeichnisse und Dateien an, die bereits ein Ausführbit haben. Das ist der sichere Weg, einen ganzen Baum in einem Durchgang zu korrigieren — Verzeichnisse werden durchquerbar, einfache Dateien bleiben nicht ausführbar.

Warum 777 fast immer falsch ist

chmod 777 gibt Lese-, Schreib- und Ausführrechte buchstäblich jedem Konto auf der Maschine. Auf einem geteilten Server oder Container-Host kann nun jeder kompromittierte Prozess — eine angreifbare Web-App, ein entlaufener Cron-Job, ein anderer Tenant — Ihre Dateien verändern. Die kanonische Horrorgeschichte ist ein web-schreibbares Upload-Verzeichnis, das zugleich ausführbar ist: Angreifer lädt ein Skript hoch, Angreifer führt das Skript aus.

Der Grund, warum 777 so verlockend ist: Es bringt Permission denied sofort zum Schweigen. Doch das eigentliche Problem ist fast nie „alle brauchen alles“ — es ist eines von:

  • Falscher Eigentümer: Der Webserver läuft als www-data, aber die Dateien gehören Ihrem User. Beheben mit chown, nicht chmod.
  • Falsche Gruppenstrategie: Stecken Sie zusammenarbeitende Nutzer in eine gemeinsame Gruppe und nutzen Sie 664/775 mit der Gruppe.
  • Ein fehlendes Ausführbit auf einem Verzeichnis irgendwo im Pfad — /home/alice selbst könnte die Durchquerung blockieren.

Behandeln Sie 777 als Diagnose („verschwindet der Fehler? Dann lag es an Berechtigungen“) und nie als Lösung.

Spezialbits: setuid, setgid und das Sticky-Bit

Drei zusätzliche Bits leben in einer vierten, führenden Oktalziffer:

  • setuid (4): Eine ausführbare Datei läuft mit den Rechten des Dateieigentümers statt des Aufrufers. So lässt passwd (Eigentümer root) gewöhnliche Nutzer ihr eigenes Passwort ändern. Setzen Sie es nie leichtfertig auf Skripte, die Sie kontrollieren.
  • setgid (2): Bei einer ausführbaren Datei läuft sie mit der Gruppe der Datei; bei einem Verzeichnis erben neue Dateien die Gruppe des Verzeichnisses statt der Primärgruppe des Erstellers. Dieses Verzeichnisverhalten ist das Rückgrat geteilter Projektordner — kombiniert mit 2775 bleiben die neuen Dateien jedes Teammitglieds gruppenzugänglich.
  • Sticky-Bit (1): Bei einem Verzeichnis kann nur der Eigentümer einer Datei sie löschen oder umbenennen, auch wenn andere Schreibzugriff haben. /tmp ist 1777 — von allen beschreibbar, nur vom jeweiligen Ersteller löschbar.

In ls -l sehen Sie sie als s, s und t, die die Ausführzeichen ersetzen (-rwsr-xr-x, drwxrwsr-x, drwxrwxrwt).

Eine Server-Härtungs-Checkliste

  • Web-Inhalte: 644 Dateien, 755 Verzeichnisse, Eigentümer der Deploy-User — der Webserver muss nur lesen.
  • Upload-Verzeichnis: 755 oder strenger, Eigentümer der Web-User, und mit noexec gemountet/konfiguriert — beschreibbar, aber nie ausführbar.
  • Private Schlüssel und Geheimnisse: 600, nur Eigentümer; ~/.ssh selbst 700.
  • Geteiltes Team-Verzeichnis: 2775 mit einer dedizierten Gruppe (das setgid-Bit hält neue Dateien in der Gruppe).
  • Skripte: 755, wenn andere sie ausführen, 700, wenn nur Sie.
  • Nie 777 in der Produktion; sind Sie versucht, finden Sie stattdessen das echte Eigentümer-/Gruppenproblem.

Sind Sie unsicher, was ein Modus ergibt, bevor Sie ihn ausführen, prüfen Sie ihn im chmod-Rechner — eine Fünf-Sekunden-Kontrolle schlägt einen rekursiven Fehler auf einem Live-Baum. Und ist der Grund, warum Sie Berechtigungen anfassen, der Schutz von Zugangsdaten, denken Sie daran, dass Berechtigungen die zweite Verteidigungslinie sind; starke Geheimnisse sind die erste — der Passwortgenerator erzeugt sie lokal.