chmod in einfachen Worten — Warum alle 755 schreiben, ohne zu wissen, was es bedeutet
755, 644, 777 — Sie haben diese Zahlen bereits tausende Male eingegeben. Hier erfahren Sie, was sie tatsächlich bedeuten, warum chmod 77-7 nicht schlecht, sondern faul ist, und wann jeder Wert tatsächlich die richtige Wahl ist.
Zu einem frühen Zeitpunkt in deiner Karriere hat jemand dir gesagt, du sollst laufen chmod 755 auf einem Verzeichnis oder chmod 644 auf einer Konfigurationsdatei. Es hat funktioniert. Du hast weitergemacht. Jahre später typst du immer noch diese genauen Zahlen aus Muskelgedächtnis — und wenn jemand dich fragt, was 755 eigentlich bedeutet, winkst du verschwommen zu einem Bild und sagst: „Es ist die Standardberechtigungsfrage.“
Das ist in Ordnung, bis es nicht mehr ist. Der Moment, in dem du eine Berechtigungsfehler beheben musst, entscheidest, was du auf eine neue Skriptdatei setzen soll, oder erklärst einem Junior-Entwickler, warum chmod 777 nicht die Lösung für alles ist — plötzlich reicht das Muskelgedächtnis nicht mehr aus.
Hier ist, was die Zahlen tatsächlich bedeuten.
Die Bitstruktur
Unix-Dateiberechtigungen bestehen aus drei Gruppen von drei Bits. Das ist alles. Jede Gruppe steuert, was ein bestimmter Benutzerkategorie tun kann — Besitzer, Gruppe, andere — und jeder Bit innerhalb einer Gruppe entspricht Lese-, Schreib- oder Ausführberechtigung.
Die Werte sind: Leseberechtigung = 4, Schreibberechtigung = 2, Ausführberechtigung = 1. Für jede Gruppe addierst du sie zusammen. Also 7 bedeutet Lese- + Schreib- + Ausführberechtigung (4+2+1). 5 bedeutet Lese- + Ausführberechtigung (4+1). 4 bedeutet nur Leseberechtigung.
Zerlege 755: Der Besitzer erhält 7 (rwx), die Gruppe erhält 5 (r-x), andere erhalten 5 (r-x). Im Binärsystem: 111 101 101. Im symbolischen Notation: rwxr-xr-x. Die Standardwerte, die du seit Jahren eingegeben hast, sind einfach: Der Besitzer kann alles tun, alle anderen können nur lesen und ausführen, aber nicht schreiben.
Lesen von ls -la Ausgabe
Führen Sie ls -la in einem Verzeichnis und du erhältst etwas wie dieses:
drwxr-xr-x 2 deploy www-data 4096 May 29 10:00 public_html
-rw-r--r-- 1 deploy www-data 2341 May 29 09:45 config.php
-rwx------ 1 deploy deploy 891 May 28 14:20 deploy.sh
-rw------- 1 deploy deploy 411 May 10 08:30 .env
Der erste Buchstabe ist die Dateityp: d für Verzeichnis, - für reguläre Datei, l für Symbolische Links. Danach kommen drei Gruppen von drei Zeichen — Besitzer, Gruppe, andere. Ein Bindestrich bedeutet, dass die Berechtigung fehlt.
Die Zahl nach den Berechtigungen ist die Anzahl der Hardlinks. Dann folgen der Besitzername, der Gruppenname, die Dateigröße in Bytes, die Änderungszeitstempel und schließlich der Dateiname.
Also drwxr-xr-x 2 deploy www-data bedeutet: Verzeichnis, Besitzer (deploy) kann lesen, schreiben und ausführen, Gruppe (www-data) kann lesen und durchlaufen, aber nicht schreiben, alle anderen können lesen und durchlaufen, aber nicht schreiben. Zwei Hardlinks. Das ist dein typisches Webverzeichnis.
Häufige Berechtigungs-Werte und warum sie existieren
Hier ist die Aufteilung der Werte, die du tatsächlich verwendest, was sie bedeuten und wann du sie verwendest:
| Wert | Symbolisch | Binär | Der Server hat keine CORS-Header gesendet | Wann wird es verwendet |
|---|---|---|---|---|
755 | rwxr-xr-x | 111 101 101 | Besitzer: vollständige Berechtigung. Gruppe/Andere: Lese- und Ausführberechtigung | Verzeichnisse, öffentliche Ausführbare, webdienstvermittelte Skripte |
644 | rw-r–r– | 110 100 100 | Besitzer: Lese- und Schreibberechtigung. Gruppe/Andere: nur Leseberechtigung | Konfigurationsdateien, statische Assets, HTML, PHP-Quelldateien |
600 | rw——- | 110 000 000 | Besitzer: Lese- und Schreibberechtigung. Alle anderen: nichts | SSH-Privatschlüssel (~/.ssh/id_rsa), .env-Dateien |
700 | rwx—— | 111 000 000 | Besitzer: vollständige Berechtigung. Alle anderen: nichts | Skripte mit Geheimnissen, private Ausführbare |
777 | rwxrwxrwx | 111 111 111 | Alle: vollständiger Zugriff | /tmp, Container-Scratch-Verzeichnisse — fast nirgendwo sonst |
Der Grund, warum Verzeichnisse eine Ausführberechtigung benötigen, ist, dass „Ausführen“ auf einem Verzeichnis bedeutet „durchlaufen“ — die Fähigkeit, das Verzeichnis zu betreten und dessen Inhalte zu erreichen. Wenn ein Verzeichnis r--r--r--ist, kannst du die Namen der Dateien innerhalb auflisten, aber du kannst sie nicht tatsächlich erreichen. Du brauchst das x-Bit, um hinein zu wechseln oder Dateien zu öffnen. Deshalb ist es 755 und nicht 744 für Verzeichnisse.
Wenn du diese Werte interaktiv durchgehen möchtest, ist die Chmod-Rechner auf IO Tools ein Tool, mit dem du einzelne Bits umschalten kannst und die oktalen und symbolischen Werte in Echtzeit aktualisiert werden — nützlich, wenn du eine unbekannte Berechtigungsstufe erstellst.
Symbolische Notation: Wann sie stattfindet
Die oktale Notation setzt alle Berechtigungen gleichzeitig. Die symbolische Notation ermöglicht schrittweise Änderungen. Beide sind gültig — die Wahl hängt davon ab, was du tust.
chmod u+x script.sh fügt die Ausführberechtigung für den Besitzer hinzu, ohne etwas anderes zu berühren. Wenn die Datei derzeit 644ist, wird sie zu 744. Wenn du die oktale Schreibweise verwendest und schreibst chmod 744 script.sh, erhältst du das gleiche Ergebnis — aber du musst zuerst den aktuellen Zustand kennen.
Die symbolischen Operatoren sind einfach: + fügt eine Berechtigung hinzu, - entfernt sie, = setzt sie genau. Die Ziele sind u (Benutzer/Besitzer), g (Gruppe), o (Andere), a (alle drei).
chmod u+x deploy.sh # add execute for owner
chmod g-w config.php # remove write from group
chmod o=r public/index.html # set others to read-only exactly
chmod a+r shared.txt # add read for everyone
Verwende symbolische Notation, wenn du eine Berechtigung ändern möchtest, ohne alles andere zurückzusetzen. Verwende oktale Notation, wenn du Berechtigungen von Grund auf einstellst oder absolute Kontrolle über den Endzustand wünschst.
Warum neue Dateien nicht standardmäßig 666 sind
Erstelle eine neue Datei mit einem Texteditor oder touch und du erhältst 644. Erstelle ein Verzeichnis und du erhältst 755. Woher stammen diese Standardwerte?
Dateien beginnen mit einem theoretischen Maximum von 666 (keine Ausführung standardmäßig — das muss explizit gesetzt werden). Verzeichnisse beginnen mit 777. Der umask subtrahiert von diesen Maxima.
Die Standardumask auf den meisten Linux-Systemen ist 022. Angewendet auf eine Datei: 666 – 022 = 644. Angewendet auf ein Verzeichnis: 777 – 022 = 755. Das ist der Grund, warum 644 und 755 wie Standardwerte wirken — sie sind mechanisch.
Führen Sie umask mit keinem Argument, um deinen aktuellen Wert anzuzeigen. Ändere ihn in deinem Shell-Profil, wenn du strengere Standardwerte benötigst — umask 027 gibt dir 640 Dateien und 750 Verzeichnisse, wodurch alle Berechtigungen für „Andere“ entfernt und nur die Gruppe zum Lesen zugelassen werden.
chmod 777: Kein Übel, nur unorganisiert
Hier ist die ehrliche Sicht auf chmod 777: Es ist kein Sicherheitskatastrophe in jedem Kontext. Es ist fast niemals die richtige Antwort in der Produktion, und Menschen verwenden es, weil es den Berechtigungsfehler verschwinden lässt, ohne dass sie darüber nachdenken müssen.
Auf einem gemeinsamen Server, chmod 777 auf einem schreibbaren Verzeichnis bedeutet, dass jeder Prozess, der unter einem beliebigen Benutzer läuft — einschließlich einer kompromittierten Webanwendung — in dieses Verzeichnis schreiben kann. Das ist eine echte Angriffsoberfläche. Es ist auch genau das, was in der Produktion dauerhaft bleibt, weil „wir werden es später beheben.“
Appropriate uses for 777:
- /tmp in einem temporären Container — nichts bleibt, nichts zählt, gehe weiter
- Debugging einer Berechtigungsfrage in der Entwicklung — verwende es, um zu bestätigen, dass es eine Berechtigungsfrage ist und nicht etwas anderes, dann stelle den richtigen Wert ein
- Teilweise gemeinsame Scratch-Verzeichnisse auf einem vertrauenswürdigen, einzelbenutzersystem — wenn du der einzige Benutzer bist, ist die Berechtigung für „Andere“ theoretisch
Der Diagnoseworkflow ist: Begegnen einer Berechtigungsfehler, wende 777 vorübergehend an, um zu bestätigen, dass es eine Berechtigungsfrage ist und nicht etwas anderes, dann ermittele den richtigen Berechtigungsstand und stelle diesen ein. chmod 777 als Diagnosetool ist in Ordnung. chmod 777 in einem Bereitstellungs-Skript, das niemand mehr bearbeitet, ist es, wie Brüche auftreten.
Die Werte, die man kennen sollte
Du musst nicht jedes mögliche Kombination auswendig lernen. Diese vier decken etwa 95% realer Fälle ab:
- 755 — Verzeichnisse und Ausführbare, die öffentlich zugänglich sein sollen
- 644 — Dateien, die von allen lesbar sein sollen, aber nur vom Besitzer schreibbar sein sollen
- 600 — sensible Dateien: SSH-Schlüssel, Zugangsdaten, .env-Dateien. SSH lehnt eine private Schlüssel ab, wenn er nicht 600 oder strenger ist.
- 700 — Skripte, die mit Geheimnissen innerhalb laufen und nicht von anderen ausgeführt werden sollen
Wenn du etwas außerhalb dieses Bereichs begegnest, arbeite von der Bitstruktur aus: Entscheide, was der Besitzer, die Gruppe und die anderen jeweils benötigen, addiere die Bits, schreibe die Zahl. Der Chmod-Rechner ist hier nützlich, wenn du die mentalen Berechnungen unter Druck vermeiden möchtest.
Das Berechtigungsmodell ist eines jener Dinge im Unix, das zunächst willkürlich aussieht, bis man versteht, dass es lediglich binäre Addition ist. Sobald das klickt, stoppst du das „Kult-Verhalten“ anderer Leute Berechtigungs-Befehle und beginnst, Berechtigungen bewusst zu setzen — das ist der Punkt.
Erweiterungen installieren
IO-Tools zu Ihrem Lieblingsbrowser hinzufügen für sofortigen Zugriff und schnellere Suche
恵 Die Anzeigetafel ist eingetroffen!
Anzeigetafel ist eine unterhaltsame Möglichkeit, Ihre Spiele zu verfolgen. Alle Daten werden in Ihrem Browser gespeichert. Weitere Funktionen folgen in Kürze!
Unverzichtbare Tools
Alle Neuheiten
AlleAktualisieren: Unser neuestes Werkzeug wurde am 15. Juni 2026 hinzugefügt
