Keine Werbung mögen? Gehen Werbefrei Heute

chmod in einfachen Worten — Warum alle 755 schreiben, ohne zu wissen, was es bedeutet

Aktualisiert am

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.

chmod in Plain English — Why Everyone Writes 755 Without Knowing What It Means 1
ANZEIGE Entfernen?

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:

WertSymbolischBinärDer Server hat keine CORS-Header gesendetWann wird es verwendet
755rwxr-xr-x111 101 101Besitzer: vollständige Berechtigung. Gruppe/Andere: Lese- und AusführberechtigungVerzeichnisse, öffentliche Ausführbare, webdienstvermittelte Skripte
644rw-r–r–110 100 100Besitzer: Lese- und Schreibberechtigung. Gruppe/Andere: nur LeseberechtigungKonfigurationsdateien, statische Assets, HTML, PHP-Quelldateien
600rw——-110 000 000Besitzer: Lese- und Schreibberechtigung. Alle anderen: nichtsSSH-Privatschlüssel (~/.ssh/id_rsa), .env-Dateien
700rwx——111 000 000Besitzer: vollständige Berechtigung. Alle anderen: nichtsSkripte mit Geheimnissen, private Ausführbare
777rwxrwxrwx111 111 111Alle: 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.

Möchten Sie werbefrei genießen? Werde noch heute werbefrei

Erweiterungen installieren

IO-Tools zu Ihrem Lieblingsbrowser hinzufügen für sofortigen Zugriff und schnellere Suche

Zu Chrome-Erweiterung Zu Kantenerweiterung Zu Firefox-Erweiterung Zu Opera-Erweiterung

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!

ANZEIGE Entfernen?
ANZEIGE Entfernen?
ANZEIGE Entfernen?

Nachrichtenecke mit technischen Highlights

Beteiligen Sie sich

Helfen Sie uns, weiterhin wertvolle kostenlose Tools bereitzustellen

Kauf mir einen Kaffee
ANZEIGE Entfernen?