Was macht chmod?
chmod (change mode) ist der Linux- und Unix-Befehl, der festlegt, wer eine Datei oder einen Ordner lesen, schreiben und ausführen darf. Jede Datei hat drei Rechte-Sätze: einen für ihren Besitzer, einen für ihre Gruppe und einen für alle anderen (others). Der Rechner oben macht aus diesen neun Checkboxen die Zahl oder die Buchstaben, die chmod erwartet, und umgekehrt.
Sie können chmod einen Modus auf zwei Arten übergeben: als Oktalzahl, etwa chmod 755 script.sh, oder in symbolischer Form, etwa chmod u+x script.sh. Nur der Besitzer der Datei oder root kann ihre Rechte ändern.

So funktionieren Linux-Dateirechte
Jedes Recht hat einen Wert: Lesen = 4, Schreiben = 2 und Ausführen = 1. Zählen Sie sie für jede Klasse zusammen, um eine Ziffer von 0 bis 7 zu erhalten, und schreiben Sie die drei Ziffern in der Reihenfolge Besitzer, Gruppe, andere. So ist rwx 4+2+1 = 7, r-x 4+0+1 = 5, und rwxr-xr-x ergibt 755.
Mit ls -l sehen Sie dasselbe als Buchstaben, zum Beispiel -rwxr-xr-x. Das erste Zeichen ist der Dateityp (- für eine normale Datei, d für ein Verzeichnis, l für einen symbolischen Link), danach folgen drei rwx-Gruppen für Besitzer, Gruppe und andere. Ein Bindestrich bedeutet, dass das Recht nicht gesetzt ist.
Bei Dateien und Ordnern bedeuten die Buchstaben leicht unterschiedliche Dinge:
Datei: öffnen und den Inhalt lesen. Ordner: die Namen darin mit ls auflisten.
Datei: den Inhalt ändern. Ordner: Dateien darin anlegen, löschen und umbenennen (dafür ist auch Ausführen auf dem Ordner nötig). Ob eine Datei gelöscht werden darf, hängt vom Schreibrecht des Ordners ab, nicht von dem der Datei.
Datei: als Programm oder Skript starten. Ordner: mit cd hineinwechseln und Dateien darin über ihren Namen öffnen. Mit Lesen, aber ohne Ausführen können Sie die Namen in einem Ordner auflisten, aber nichts darin öffnen.
u ist der Besitzer der Datei, g ihre Gruppe und o alle anderen. Linux verwendet nur die erste Klasse, die auf Sie zutrifft: Sind Sie der Besitzer, gelten die Rechte für Gruppe und andere nicht für Sie, selbst wenn sie mehr erlauben.
Advertisement
Gängige chmod-Rechte und wann Sie sie verwenden
Diese Modi decken fast jeden Fall aus der Praxis ab. Die meisten gibt es im Rechner auch als Vorlage-Button.
Der Standard für die meisten Dateien: Webseiten, Bilder und Konfigurationsdateien, die nicht geheim sind. Der Besitzer darf bearbeiten, alle anderen nur lesen.
Der Standard für Verzeichnisse und für Programme oder Skripte, die jeder ausführen darf. Nur der Besitzer kann sie ändern.
Nur der Besitzer darf lesen oder schreiben. Verwenden Sie diesen Modus für private SSH-Schlüssel, .env-Dateien, API-Tokens und alles andere, was ein Passwort enthält.
Nur der Besitzer kann den Ordner öffnen oder auflisten. Der Standard für ~/.ssh und persönliche Skript-Ordner.
Der Besitzer bearbeitet, eine Gruppe (zum Beispiel die des Webservers) liest, und niemand sonst sieht die Datei.
Der Besitzer hat vollen Zugriff, die Gruppe kann den Ordner öffnen und lesen, andere bleiben draußen.
Besitzer und Gruppe dürfen beide bearbeiten. Üblich auf Team-Servern, auf denen sich mehrere Nutzer eine Gruppe teilen.
Besitzer und Gruppe können darin Dateien anlegen und löschen, andere können nur hineinschauen.
Nur der Besitzer darf lesen, niemand darf schreiben. AWS fordert Sie auf, chmod 400 auf ein heruntergeladenes .pem-Schlüsselpaar anzuwenden, bevor Sie es mit SSH nutzen.
Jeder Nutzer und jeder Prozess auf dem Rechner kann lesen, ändern und ausführen. Fast nie die richtige Lösung, wie der nächste Abschnitt erklärt.
chmod 755 vs 644 vs 777
755 und 644 unterscheiden sich nur im Ausführen-Bit: 755 erlaubt jedem, die Datei auszuführen oder den Ordner zu öffnen, 644 nicht. Deshalb lautet die übliche Regel Ordner 755, Dateien 644: Ordner brauchen Ausführen, damit man hineinkommt, während die meisten Dateien nie ausgeführt werden sollten.
777 gibt jedem Konto auf dem Rechner Schreibzugriff, auch dem Benutzer des Webservers. Wird irgendeine Website oder irgendein Skript auf dem Server kompromittiert, kann der Angreifer Ihre Dateien ändern oder ersetzen, Malware in Ihre Seiten einschleusen oder eine Hintertür einbauen. Scheitert etwas mit „Permission denied“, ist die eigentliche Lösung meist der richtige Besitzer (chown) oder die richtige Gruppe, nicht 777.
Empfohlene Rechte für die häufigsten Fälle:
Website-Dateien (HTML, PHP, Bilder):
644. Website-Ordner:755. Das empfehlen WordPress und die meisten Hosting-Panels.wp-config.php und andere Dateien mit Datenbank-Passwörtern: WordPress empfiehlt
440oder400, damit andere Nutzer auf dem Server sie nicht lesen können.600oder640halten sie ebenfalls privat und lassen den Besitzer trotzdem bearbeiten.Upload- oder Cache-Ordner, in die der Webserver schreiben muss: Geben Sie der Gruppe des Webservers Schreibzugriff (
775) oder machen Sie den Webserver-Benutzer zum Besitzer, statt777zu verwenden.Ordner ~/.ssh:
700. Private Schlüssel (id_ed25519,id_rsa):600oder400. authorized_keys:600. Öffentliche Schlüssel (.pub):644.Shell-Skripte, die Sie ausführen möchten:
755, oder700, wenn nur Sie sie ausführen sollen.chmod +x script.shfügt Ausführen hinzu, ohne die anderen Bits anzutasten.
Advertisement
„Permissions 0644 are too open“ bei SSH-Schlüsseln beheben
SSH ignoriert einen privaten Schlüssel, den andere Nutzer lesen können, und meldet WARNING: UNPROTECTED PRIVATE KEY FILE!, gefolgt von Permissions 0644 for '/home/you/.ssh/id_rsa' are too open. Führen Sie chmod 600 ~/.ssh/id_rsa (oder chmod 400) aus und verbinden Sie sich erneut. Auf der Serverseite ignoriert der SSH-Daemon mit der Standardeinstellung StrictModes yes außerdem authorized_keys, wenn diese Datei, ~/.ssh oder Ihr Home-Ordner für die Gruppe oder andere beschreibbar ist.
Wenn die Rechte stimmen und die Verbindung trotzdem scheitert, prüfen Sie, ob Port 22 auf dem Server offen ist.
Sonderrechte: Setuid, Setgid und Sticky Bit
Eine vierte, vorangestellte Ziffer fügt drei Sonderbits hinzu: 4 = setuid, 2 = setgid und 1 = sticky. Sie werden wie die anderen addiert, 6755 ist also setuid plus setgid. In ls -l ersetzen sie den Buchstaben für Ausführen: s an der Position von Besitzer oder Gruppe, t an der Position der anderen.
Eine Linux-Eigenheit: GNU chmod 755 dir (und chmod 0755 dir) lässt ein vorhandenes setuid- oder setgid-Bit auf einem Verzeichnis bestehen. Um es zu entfernen, geben Sie das ausdrücklich an, mit chmod g-s dir (oder chmod a-s dir für beide Bits), oder Sie verwenden fünf Ziffern: chmod 00755 dir.
Ein Programm mit setuid läuft mit den Rechten seines Besitzers statt mit Ihren. /usr/bin/passwd hat auf den meisten Linux-Systemen 4755 (-rwsr-xr-x), damit normale Nutzer die root gehörende Passwortdatei aktualisieren können. Linux ignoriert setuid bei Shell-Skripten und Verzeichnissen.
Ein Programm läuft damit mit der Gruppe der Datei. Auf einem Ordner ist es nützlicher: Neue Dateien darin erhalten die Gruppe des Ordners, und neue Unterordner erben setgid. 2775 ist der klassische Modus für einen gemeinsamen Team-Ordner.
Auf einem Ordner dürfen nur der Besitzer einer Datei, der Besitzer des Ordners oder root Dateien darin löschen oder umbenennen, selbst wenn alle dort schreiben dürfen. Deshalb hat /tmp den Modus 1777 (drwxrwxrwt). Linux ignoriert das Sticky Bit bei Dateien.
Ein großes S oder T in ls -l bedeutet, dass das Sonderbit gesetzt ist, das Ausführen-Bit an derselben Position aber nicht. So erscheint 4644 als rwSr--r-- und 1666 als rw-rw-rwT.
Advertisement
Symbolischer Modus: u, g, o, a mit +, - und =
Der symbolische Modus ändert Rechte relativ zum aktuellen Stand, was eine reine Oktalzahl nicht kann. Er besteht aus drei Teilen: wer (u Besitzer, g Gruppe, o andere, a alle), einem Operator (+ hinzufügen, - entfernen, = genau setzen) und den Rechten (r, w, x sowie s und t). Trennen Sie mehrere Änderungen durch Kommas ohne Leerzeichen.
chmod +x file ohne Wer-Buchstaben gilt für alle drei Klassen, abzüglich dessen, was Ihre umask sperrt. Mit der üblichen umask 022 entspricht das a+x.
chmod u+x deploy.sh: Der Besitzer darf das Skript ausführen, sonst ändert sich nichts.chmod go-w report.txt: Gruppe und anderen das Schreibrecht entziehen.chmod o= secrets.txt: anderen sämtliche Rechte entziehen.chmod a+r index.html: Jeder darf die Datei lesen.chmod u=rwx,g=rx,o=rx app: die symbolische Schreibweise von 755. Der Rechner zeigt diese Form für jeden Modus.chmod -R u=rwX,go=rX public_html: Das große X fügt Ausführen nur bei Ordnern und bei bereits ausführbaren Dateien hinzu, sodass Ordner 755 und normale Dateien 644 erhalten.
umask: Standardrechte für neue Dateien
Die umask bestimmt, welche Rechte neue Dateien und Ordner erhalten. Die meisten Programme legen Dateien mit 666 (rw-rw-rw-) und Ordner mit 777 an, und jedes in der umask gesetzte Bit wird abgeschaltet. Mit der üblichen umask 022 entstehen neue Dateien als 644 und neue Ordner als 755.
Es ist eine bitweise Maske, keine Subtraktion. Mit umask 027 erhalten Dateien 640; zieht man 027 Ziffer für Ziffer von 666 ab, kommt nicht einmal ein gültiger Modus heraus. Öffnen Sie im Rechner den Tab Umask, um das Ergebnis für jeden Wert zu sehen.
022: Dateien 644, Ordner 755. Der übliche Standard.002: Dateien 664, Ordner 775. Ihre Gruppe kann bearbeiten, was Sie anlegen; üblich, wenn jeder Nutzer eine eigene private Gruppe hat.027: Dateien 640, Ordner 750. Nichts für andere, eine gute Wahl auf Servern.077: Dateien 600, Ordner 700. Vollständig privat.Mit
umasksehen Sie Ihren Wert, mitumask -Ssehen Sie ihn als Buchstaben, undumask 027ändert ihn für die aktuelle Shell. Tragen Sie den Befehl in~/.bashrcoder~/.profileein, damit er erhalten bleibt.
Advertisement
So nutzen Sie den Chmod-Rechner
Haken Sie Lesen, Schreiben und Ausführen für Besitzer, Gruppe und andere an oder klicken Sie auf eine Vorlage wie 644 oder 755. Jede Zeile zeigt dabei ihre Ziffer.
Geben Sie eine Oktalzahl wie 750 oder 2775 ein oder fügen Sie einen symbolischen String wie rwxr-x--- ein. Auch ein vollständiger ls -l-String wie drwxr-sr-x funktioniert, und der Dateityp wird angezeigt.
Haken Sie Setuid, Setgid oder Sticky an, um den 4-stelligen Modus zu erhalten. Eine Warnung erscheint, wenn ein Modus allen Schreibzugriff ohne Sticky Bit gibt.
Geben Sie den Namen Ihrer Datei oder Ihres Ordners ein, haken Sie Rekursiv für einen ganzen Verzeichnisbaum an und kopieren Sie den numerischen oder symbolischen chmod-Befehl. Die Seitenadresse speichert den Modus (zum Beispiel ?mode=750), sodass Sie ihn als Lesezeichen speichern oder teilen können.
Beispiele für chmod-Befehle
Führen Sie diese Befehle in einem Linux- oder macOS-Terminal aus. Stellen Sie sudo voran, wenn die Datei einem anderen Nutzer oder root gehört.
chmod +x deploy.sh # Ausführen hinzufügen
chmod 755 deploy.sh # oder den ganzen Modus setzen
./deploy.shfind /var/www/html -type d -exec chmod 755 {} +
find /var/www/html -type f -exec chmod 644 {} +chmod -R 755 folder # auch Dateien werden ausführbar
chmod -R u=rwX,go=rX folder # Ordner 755, Dateien 644chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519 ~/.ssh/authorized_keys
chmod 644 ~/.ssh/id_ed25519.pubstat -c '%a %n' file # Linux: 644 file
stat -f '%Lp %N' file # macOS: 644 file
stat -f '%Mp%Lp %N' file # macOS mit Sonderbits: 0644 filechgrp developers /srv/project
chmod 2775 /srv/project # neue Dateien erhalten die Gruppe developersWeitere Entwickler-Tools
Weitere kostenlose Tools für Entwickler und Systemadministratoren, alle im Browser. Sie brauchen eindeutige IDs für Dateien oder Datensätze? Probieren Sie den UUID Generator.
CIDR-Bereiche, Netzmasken und nutzbare Hosts mit visuellem Bit-Raster.
Prüfen, ob Port 22, 80, 443 oder ein anderer Port offen ist.
Starke Zufallspasswörter mit Entropieanalyse.
Unix-Timestamps in Datumsangaben umrechnen und zurück, in jeder Zeitzone.