🔒
Entwickler-Tools
March 21, 20268 min readBy BrowseryTools Team

Linux-Dateiberechtigungen erklärt: Ein vollständiger chmod-Leitfaden

Ein vollständiger Leitfaden zu Unix-Dateiberechtigungen — das Eigentümer/Gruppe/Andere-Modell, Oktalnotation (755, 644, 777), symbolische Notation, Setuid/Setgid/Sticky Bit und Praxisbeispiele für Webserver und SSH-Schlüssel.

chmodLinuxDateiberechtigungenUnixSicherheitSystemadministration

Jede Datei und jedes Verzeichnis auf einem Linux- oder macOS-System trägt einen Satz von Berechtigungen, der steuert, wer sie lesen, beschreiben oder ausführen darf. Diese Berechtigungen richtig zu setzen entscheidet darüber, ob ein Server sicher ist oder Daten preisgibt und kompromittiert wird. Dennoch kann die Schreibweise — chmod 755, ls -la-Ausgabe mit -rwxr-xr-- — undurchsichtig wirken, bis man das zugrundeliegende Modell versteht. Dieser Leitfaden erklärt Unix-Dateiberechtigungen von Grund auf.

Berechtigungswerte können Sie sofort berechnen und zwischen oktaler und symbolischer Notation umrechnen mit dem BrowseryTools chmod-Rechner — kostenlos, ohne Anmeldung, alles läuft in Ihrem Browser.

Das Unix-Berechtigungsmodell: Eigentümer, Gruppe, Andere

Unix weist jeder Datei und jedem Verzeichnis drei Berechtigungssätze zu, die jeweils eine unterschiedliche Zielgruppe abdecken:

  • Eigentümer (user) — das Benutzerkonto, dem die Datei gehört. In der Regel der Benutzer, der sie erstellt hat.
  • Gruppe — eine benannte Gruppe von Benutzern. Die Datei gehört zu einer Gruppe; alle Mitglieder dieser Gruppe teilen die Gruppenberechtigungen.
  • Andere (world) — alle anderen auf dem System, die weder Eigentümer noch Mitglied der Gruppe sind.

Innerhalb dieser drei Sätze gibt es jeweils drei Berechtigungsbits: Lesen (r), Schreiben (w) und Ausführen (x). Das ergibt insgesamt neun Berechtigungsbits, die direkt den neun Zeichen nach dem Dateityp-Indikator in der ls -la-Ausgabe entsprechen.

ls -la-Ausgabe lesen

Wenn Sie ls -la ausführen, beginnt jede Zeile mit einer 10-Zeichen-Zeichenkette wie -rwxr-xr--. So liest man sie:

-  rwx  r-x  r--
^  ^^^  ^^^  ^^^
|  |    |    └── Andere:    nur Lesen
|  |    └─────── Gruppe:    Lesen + Ausführen
|  └──────────── Eigentümer: Lesen + Schreiben + Ausführen
└─────────────── Dateityp: - = Datei, d = Verzeichnis, l = Symlink

Ein Bindestrich - an einer Berechtigungsposition bedeutet, dass diese Berechtigung nicht gewährt wird. r-x bedeutet also: Lesen und Ausführen sind erlaubt, Schreiben nicht.

Was Lesen, Schreiben, Ausführen für Dateien vs. Verzeichnisse bedeutet

Die drei Berechtigungsbits haben unterschiedliche Bedeutungen, je nachdem ob sie für eine Datei oder ein Verzeichnis gelten:

  • Datei lesen (r) — Dateiinhalt lesen (cat, less, in einem Editor öffnen).
  • Datei schreiben (w) — Datei ändern oder kürzen. Hinweis: Das Löschen einer Datei wird durch die Schreibberechtigung des übergeordneten Verzeichnisses gesteuert, nicht durch das eigene Schreib-Bit der Datei.
  • Datei ausführen (x) — Datei als Programm oder Skript ausführen. Ohne dieses Bit gibt ./script.sh „Zugriff verweigert" zurück, auch wenn Sie die Datei lesen können.
  • Verzeichnis lesen (r) — Verzeichnisinhalt auflisten (ls). Ohne diese Berechtigung wissen Sie, dass das Verzeichnis existiert, können aber nicht sehen, was darin ist.
  • Verzeichnis schreiben (w) — Dateien im Verzeichnis erstellen, umbenennen oder löschen. Deshalb können Sie eine Datei löschen, die Ihnen nicht gehört, wenn Sie Schreibzugriff auf das übergeordnete Verzeichnis haben.
  • Verzeichnis ausführen (x) — in das Verzeichnis wechseln (cd) und auf Dateien darin zugreifen, wenn Sie deren Namen kennen. Dieses Bit wird manchmal als „Such-Bit" bezeichnet. Ein Verzeichnis mit r-- erlaubt das Auflisten von Dateinamen, aber keinen Zugriff; eines mit --x erlaubt den Zugriff auf Dateien nach Namen, aber kein Auflisten.

Oktalnotation: 755, 644, 777

Jeder Berechtigungssatz (Eigentümer, Gruppe, Andere) besteht aus drei Bits. Drei Bits können Werte von 0 bis 7 darstellen — genau eine Oktalziffer. Deshalb werden Berechtigungen als drei Oktalziffern geschrieben, eine pro Zielgruppe:

Bit values:  r = 4,  w = 2,  x = 1

rwx = 4+2+1 = 7
r-x = 4+0+1 = 5
r-- = 4+0+0 = 4
--- = 0+0+0 = 0

chmod 755 → owner: 7 (rwx), group: 5 (r-x), other: 5 (r-x)
chmod 644 → owner: 6 (rw-), group: 4 (r--), other: 4 (r--)
chmod 600 → owner: 6 (rw-), group: 0 (---), other: 0 (---)

Sie müssen keine Kombinationen auswendig lernen — nutzen Sie den BrowseryTools chmod-Rechner, um nachzusehen, was ein Oktalwert bedeutet, oder um den richtigen Wert für Ihre Situation zu ermitteln.

Symbolische Notation: u+x, g-w, o=r

Im symbolischen Modus können Sie Berechtigungen relativ zum aktuellen Zustand ändern, ohne alle drei Sätze auf einmal anzugeben. Das Format ist [Wer][Operator][Berechtigungen]:

  • Wer: u (Eigentümer/user), g (Gruppe), o (Andere), a (alle drei)
  • Operator: + (hinzufügen), - (entfernen), = (genau setzen)
  • Berechtigungen: r, w, x
chmod u+x script.sh       # add execute for owner only
chmod g-w config.txt      # remove write from group
chmod o=r public.html     # set other to read-only exactly
chmod a+r file.txt        # add read for everyone
chmod u=rwx,g=rx,o=       # equivalent to chmod 750

Häufige Berechtigungsmuster erklärt

  • 755 (rwxr-xr-x) — Standard für ausführbare Dateien und Verzeichnisse. Der Eigentümer darf alles; alle anderen können lesen und ausführen (oder ein Verzeichnis betreten), aber nicht schreiben. Der Standard für Dokumentenstamm-Verzeichnisse von Webservern und öffentliche Skripte.
  • 644 (rw-r--r--) — Standard für reguläre Dateien. Der Eigentümer kann lesen und schreiben; alle anderen können nur lesen. Geeignet für Web-Assets, Konfigurationsdateien ohne Geheimnisse und die meisten statischen Inhalte.
  • 600 (rw-------) — Der Eigentümer kann lesen und schreiben; niemand sonst hat Zugriff. Erforderlich für private SSH-Schlüssel (~/.ssh/id_rsa). SSH verweigert die Verwendung einer Schlüsseldatei mit lockeren Berechtigungen.
  • 700 (rwx------) — Der Eigentümer darf alles; niemand sonst hat Zugriff. Geeignet für private Skripte und Verzeichnisse mit sensiblen Daten.
  • 400 (r--------) — Nur-Lesen für den Eigentümer; für alle anderen komplett gesperrt. Für unveränderliche Konfigurationsdateien und Zertifikate, bei denen versehentliches Schreiben schädlich wäre.

Warum 777 gefährlich ist

chmod 777 gibt jedem Benutzer auf dem System Lese-, Schreib- und Ausführungsrechte. Das bedeutet: jeder Prozess, der als beliebiger Benutzer läuft — einschließlich einer kompromittierten Webanwendung, eines bösartigen Skripts in einer Shared-Hosting-Umgebung oder eines anderen Benutzers auf dem Rechner — kann die Datei ändern oder ausführen. In einem Webserver-Kontext ermöglicht eine PHP-Datei mit 777-Berechtigungen jedem anderen Prozess, sie mit bösartigem Code zu überschreiben. Verwenden Sie 777 nie in der Produktion. Wenn Sie damit einen Berechtigungsfehler beheben, ist die richtige Lösung, dem richtigen Benutzer oder der richtigen Gruppe die Eigentümerschaft an der Datei zu geben.

Setuid, Setgid und Sticky Bit

Neben den neun Standard-Bits gibt es drei Sonderbits, die als vierte führende Ziffer in der vierstelligen Oktalnotation erscheinen:

  • Setuid (4xxx) — wenn auf einer ausführbaren Datei gesetzt, läuft das Programm mit den Rechten des Datei-Eigentümers, nicht des Aufrufers. /usr/bin/passwd verwendet dies, damit normale Benutzer in /etc/shadow schreiben können, das root gehört.
  • Setgid (2xxx) — bei einer ausführbaren Datei: läuft mit den Gruppenrechten der Datei. Bei einem Verzeichnis: neu erstellte Dateien darin erben die Gruppe des Verzeichnisses statt der primären Gruppe des Erstellers — nützlich für gemeinsame Projektverzeichnisse.
  • Sticky Bit (1xxx) — bei einem Verzeichnis: verhindert, dass Benutzer Dateien löschen, die ihnen nicht gehören, auch wenn sie Schreibzugriff auf das Verzeichnis haben. /tmp hat das Sticky Bit gesetzt (chmod 1777), damit Benutzer eigene temporäre Dateien erstellen, aber nicht die der anderen löschen können.

chmod rekursiv (-R) und Praxisbeispiele

Das Flag -R wendet eine Berechtigungsänderung rekursiv auf ein Verzeichnis und alle seine Inhalte an. Verwenden Sie es mit Bedacht — dieselben Berechtigungen auf Dateien und Verzeichnisse anzuwenden ist oft falsch, weil Verzeichnisse das Ausführen-Bit zum Betreten benötigen, reguläre Dateien aber normalerweise kein Ausführen-Bit haben sollten:

# Web server: directories need 755, files need 644
find /var/www/html -type d -exec chmod 755 {} ;
find /var/www/html -type f -exec chmod 644 {} ;

# Fix SSH key permissions
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 644 ~/.ssh/authorized_keys

# Make a deploy script executable
chmod +x deploy.sh

Wenn Sie unsicher sind, welchen Oktalwert Sie verwenden sollen, ermöglicht der BrowseryTools chmod-Rechner das Anklicken von Checkboxen für Eigentümer-, Gruppen- und andere Berechtigungen und zeigt sofort den resultierenden Oktalwert und die symbolische Notation an.

Kostenloser chmod-Rechner — Oktal ↔ Symbolisch ↔ Klartext

chmod-Rechner öffnen →

🛠️

Try the Tools — 100% Free, No Sign-Up

Everything runs in your browser. No uploads. No accounts. No ads.

Explore All Tools →