Chmod-Rechner für Linux-Dateiberechtigungen
Wandeln Sie Linux-Dateiberechtigungen zwischen einer anklickbaren Auswahl, Oktalzahlen (z. B. 755) und symbolischer Schreibweise (z. B. rwxr-xr-x) um. Dazu erhalten Sie sofort verwendbare chmod-Befehle, eine ls -l-Vorschau und Sicherheitshinweise für Dateien und Verzeichnisse.
Linux-Dateiberechtigungen zwischen Kontrollkästchen, Oktalcode und symbolischer Schreibweise umrechnen
Chmod-Formel
Dabei gilt:
- \(r\), \(w\), \(x\) — die Bits für Lesen, Schreiben und Ausführen; jedes ist 1, wenn die Berechtigung erteilt ist, andernfalls 0;
- \(d\) — die Oktalziffer für eine Berechtigungsklasse (Eigentümer, Gruppe oder Andere), berechnet mit den Gewichtungen 4–2–1;
- \(s_{\text{uid}}\), \(s_{\text{gid}}\), \(s_{\text{sticky}}\) — die Sonderbits Setuid, Setgid und Sticky (ebenfalls 0 oder 1).
Jede Berechtigungsklasse erhält eine Oktalziffer: Lesen zählt 4, Schreiben 2 und Ausführen 1. Die Summe der erteilten Berechtigungen ergibt eine Zahl von 0 bis 7. Eine optionale vorangestellte Ziffer codiert die Sonderbits nach demselben 4–2–1-Schema. So steht 4755 für Setuid zusammen mit den bekannten Berechtigungen 755.
Chmod: Rechenbeispiel
Beispiel: Der Eigentümer darf ein Skript bearbeiten und ausführen; die Gruppe und alle anderen dürfen es nur lesen und ausführen. Das entspricht der üblichen Einstellung 755 (und der Vorauswahl im Rechner: Eigentümer r+w+x, Gruppe r+x, Andere r+x).
\[ d_{\text{Eigentümer}} = 4 + 2 + 1 = 7 \]
\[ d_{\text{Gruppe}} = 4 + 0 + 1 = 5 \]
\[ d_{\text{Andere}} = 4 + 0 + 1 = 5 \]
\[ \text{Modus} = 755 \]
Ergebnis: Oktalwert 755, symbolische Schreibweise rwxr-xr-x, Befehl chmod 755 file. In der Ausgabe von ls -l erscheint die Datei als -rwxr-xr-x.
So verwenden Sie den Rechner
- Öffnen Sie die Auswahlliste Eingabemethode und wählen Sie, wie Sie die Berechtigungen angeben möchten: Kontrollkästchen (Berechtigungsraster), Oktalzahl, Symbolische Schreibweise oder Häufige Voreinstellungen. Nur die Felder der gewählten Methode bleiben sichtbar.
- Bei Kontrollkästchen wählen Sie für jede Klasse — Eigentümer (u), Gruppe (g) und Andere (o) — Lesen, Schreiben und Ausführen aus. Optional können Sie auch die Sonderbits Setuid, Setgid und Sticky aktivieren.
- Bei Oktalzahl geben Sie drei Ziffern (z. B. 755) oder vier Ziffern mit vorangestellter Sonderbit-Ziffer (z. B. 4755) ein. Bei Symbolische Schreibweise geben Sie neun Zeichen wie rwxr-xr-x ein oder fügen eine vollständige
ls -l-Zeichenfolge wie-rwxr-xr-xein — das vorangestellte Dateitypzeichen wird automatisch entfernt. Bei Häufige Voreinstellungen wählen Sie einfach einen fertigen Berechtigungssatz. - Stellen Sie den Dateityp auf Reguläre Datei (-) oder Verzeichnis (d), damit die Erläuterung und die
ls -l-Vorschau zum Dateityp passen. - Sehen Sie sich die Ergebnisse an: den numerischen Oktalwert, die symbolische Schreibweise, kopierfertige chmod-Befehle, eine Vorschau im Stil von ls -l, eine leicht verständliche Erklärung und Sicherheitshinweise.
Linux-Dateiberechtigungen verstehen und lesen
Jede Datei und jedes Verzeichnis unter Linux hat neun Berechtigungsbits, aufgeteilt auf drei Klassen: den Eigentümer (u), der die Datei erstellt hat, die Gruppe (g), der die Datei gehört, und Andere (o) — alle übrigen Benutzer des Systems. In jeder Klasse legen drei Bits fest, ob sie die Datei lesen (r), schreiben (w) und ausführen (x) darf. Mit chmod ändern Sie diese Bits. Der Rechner wandelt jede ihrer Darstellungsformen in die anderen um.
In der oktalen Schreibweise wird jede Klasse mit den Gewichtungen 4–2–1 zu einer Ziffer zusammengefasst. Daher gibt es Werte wie 644 oder 755. Die symbolische Schreibweise zeigt dieselben Bits als neun Zeichen von links nach rechts: zuerst die drei Zeichen für den Eigentümer, dann für die Gruppe und schließlich für Andere. Ein Bindestrich bedeutet, dass die Berechtigung fehlt. rw-r--r-- steht also für 644: Die Datei ist lesbar, aber nicht ausführbar. Beide Schreibweisen beschreiben genau dieselben Bits — verwenden Sie diejenige, die das jeweilige Werkzeug akzeptiert.
Was die Bits bewirken, hängt vom Dateityp ab. Bei einer regulären Datei bedeutet r, dass man ihren Inhalt ansehen darf, w erlaubt Änderungen und x die Ausführung als Programm. Bei einem Verzeichnis erlaubt r, die darin enthaltenen Namen aufzulisten; w erlaubt, Einträge darin anzulegen, umzubenennen oder zu löschen; und x erlaubt, es mit cd zu betreten und die enthaltenen Dateien zu öffnen. Deshalb benötigt ein Verzeichnis das x-Bit, damit seine Inhalte zugänglich sind. Für private Verzeichnisse wie ~/.ssh ist daher 700 die übliche Einstellung.
Drei zusätzliche Sonderbits vervollständigen die Berechtigungen. Setuid (4) bewirkt, dass eine ausführbare Datei mit den Rechten ihres Eigentümers läuft — so funktioniert /usr/bin/passwd. Setgid (2) bewirkt dasselbe für die Gruppe. Bei Verzeichnissen sorgt es außerdem dafür, dass neue Dateien die Gruppe des Verzeichnisses übernehmen. Sticky (1) schränkt das Löschen in einem gemeinsam genutzten, beschreibbaren Verzeichnis ein: Benutzer dürfen nur ihre eigenen Dateien entfernen. Diese Regel schützt /tmp (1777). In der symbolischen Ausgabe erscheinen die Sonderbits als s/S an einer Ausführungsstelle beziehungsweise als t/T an der letzten Stelle. Ein Großbuchstabe zeigt an, dass das zugehörige Ausführungsbit nicht gesetzt ist.
Häufige Berechtigungen
| Oktalwert | Symbolisch | Typische Verwendung |
|---|---|---|
| 600 | rw------- | Private Dateien wie SSH-Schlüssel |
| 644 | rw-r--r-- | Gewöhnliche Dateien, Webinhalte |
| 700 | rwx------ | Private Verzeichnisse wie ~/.ssh |
| 755 | rwxr-xr-x | Programme, Skripte, über das Web bereitgestellte Dateien |
| 775 | rwxrwxr-x | Gemeinsame Verzeichnisse für eine vertrauenswürdige Gruppe |
| 1777 | rwxrwxrwt | Gemeinsam genutzte temporäre Verzeichnisse wie /tmp |
| 4755 | rwsr-xr-x | Ausführbare Dateien mit Setuid und root als Eigentümer (sparsam verwenden) |
Annahmen, Grenzen und praktische Tipps
- 777 ist fast nie die richtige Wahl. Eine Datei, die für alle beschreibbar ist, kann von jedem Benutzerkonto des Systems geändert werden. Verwenden Sie lieber 775 mit einer passend gewählten Gruppe oder ACLs (
setfacl>), bevor Sie zu 777 greifen. - Kombinieren Sie allgemeine Schreibrechte niemals mit Setuid oder Setgid. Bei Werten wie 4777 oder 7777 kann jeder die Datei ersetzen, obwohl sie weiterhin mit erhöhten Rechten ausgeführt wird — eine klassische Sicherheitslücke zur Ausweitung von Berechtigungen.
- Andere sollten nicht mehr Rechte als der Eigentümer haben. Ist die dritte Ziffer größer als die erste, haben Sie sich höchstwahrscheinlich vertippt. Die Sicherheitshinweise machen Sie darauf aufmerksam.
- 000 sperrt alle aus, auch den Eigentümer. Nur root kann den Zugriff wiederherstellen. Verwenden Sie für private Dateien oder Verzeichnisse stattdessen 600 oder 700.
- Seien Sie vorsichtig mit
chmod -R. Ein rekursiv angewendeter Zahlenwert überschreibt auf einmal alle Bits jeder Datei und jedes Unterverzeichnisses. Verzeichnisse benötigen meist das x-Bit, Datendateien dagegen nicht. Legen Sie die Berechtigungen nach Dateityp fest, statt sie pauschal auf einen ganzen Verzeichnisbaum anzuwenden. - root ist nicht an die Berechtigungsbits gebunden. Die Berechtigungen schränken normale Benutzer ein; vor Zugriff mit root-Rechten schützen sie nicht.
- Der Rechner wandelt bekannte Darstellungen von Berechtigungen einschließlich der Sonderbits ineinander um. ACLs, SELinux und andere verpflichtende Zugriffskontrollen, die den tatsächlichen Zugriff ebenfalls beeinflussen können, berücksichtigt er jedoch nicht.
Wenn Sie auch mit anderen Zahlendarstellungen unter Linux arbeiten, helfen Ihnen möglicherweise der Unix-Zeitstempel-Umrechner, der Hexadezimal-Umrechner und der Binärrechner, die zugrunde liegenden Zahlensysteme zu verstehen.
Häufig gestellte Fragen
Wie lege ich rekursiv unterschiedliche Berechtigungen für Dateien und Verzeichnisse fest?
Verwenden Sie find, um für jeden Dateityp einen eigenen Wert festzulegen: find /path -type d -exec chmod 755 {} + für Verzeichnisse und find /path -type f -exec chmod 644 {} + für Dateien. Ein einfaches chmod -R 755 gibt Datendateien ein unnötiges Ausführungsbit. -R 644 entfernt dagegen das x-Bit von Verzeichnissen, sodass Sie diese nicht mehr betreten können. Die Trennung nach Dateityp vermeidet beide Fehler.
Wie kann ich die aktuellen Berechtigungen einer Datei als Oktalzahl anzeigen?
Führen Sie stat -c '%a' filename aus (unter macOS stat -f '%Lp' filename). Sie erhalten den Wert direkt als Ziffern, etwa 644. Die ausführliche Ausgabe von ls -l zeigt nur die symbolische Schreibweise, die Sie selbst entschlüsseln müssten. Den ausgegebenen Oktalwert können Sie direkt in das Feld „Oktalzahl“ des Rechners einfügen und nachsehen, was die einzelnen Bits bewirken.
Warum erhalte ich nach chmod weiterhin die Meldung „Permission denied“?
Prüfen Sie drei Dinge: Die Verzeichnisse entlang des Pfads müssen Ihnen jeweils das x-Bit (Ausführen) gewähren, damit Sie die Datei erreichen können. Ein Verzeichnis mit 644 sperrt den Zugriff auf alle enthaltenen Dateien, selbst wenn eine davon 777 hat. Außerdem können Sie die Berechtigungen einer Datei, die Ihnen nicht gehört, nicht mit chmod ändern. Schließlich können Regeln auf Dateisystemebene die Bits übersteuern: Einhängeoptionen wie noexec, ACLs, SELinux oder AppArmor können den Zugriff unabhängig vom Berechtigungswert verweigern.
Was bedeutet chmod a+r, und worin unterscheidet es sich von o+r?
a steht für „alle“: Die Änderung gilt gleichzeitig für Eigentümer (u), Gruppe (g) und Andere (o). a+r erteilt also allen Leserechte. o+r ändert nur die Rechte für Andere. In der oktalen Schreibweise gibt es keine solche Kurzform: Ein Zahlenwert überschreibt immer alle neun Bits. Wenn die bestehenden Bits anderer Klassen erhalten bleiben sollen, ändern Sie die gewünschten Rechte daher besser symbolisch mit + und −, statt den gesamten Zahlenwert zu ersetzen.
Warum erhalten meine neuen Dateien 664 statt 755? Was ist umask?
umask ist eine Shell-Einstellung, die beim Erstellen einer Datei Bits von den durch ein Programm angeforderten Berechtigungen entfernt. Bei der häufig verwendeten umask 002 wird aus einer für Dateien angeforderten 666 (rw-rw-rw-) eine 664; aus einer für Verzeichnisse angeforderten 777 wird 775. Ihren aktuellen Wert prüfen Sie mit umask und ändern ihn beispielsweise mit umask 022. chmod spielt beim Erstellen keine Rolle — es ändert die Bits erst nachträglich.
Warum funktioniert Setuid bei meinem Shellskript nicht?
Die meisten Linux-Systeme ignorieren das Setuid-Bit bei interpretierten Skripten (Shell, Python und Ähnliches) bewusst. Tatsächlich ausgeführt wird der Interpreter, nicht das Skript, und der Interpreter läuft mit den Rechten der aufrufenden Person. Setuid wirkt daher fast nur bei kompilierten ausführbaren Dateien wie /usr/bin/passwd. Wenn ein Skript Aktionen mit erhöhten Rechten ausführen soll, verwenden Sie sudo-Regeln, statt auf chmod 4755 für das Skript zu setzen.