Chmod-Rechner
Interaktiver Linux-/Unix-Datei-Berechtigungs-Calc.
chmod 000 filename
Gängige Berechtigungen
So funktioniert es
- Schalten Sie die Kontrollkästchen, um Lese-, Schreib- und Ausführungsrechte für Besitzer, Gruppe und Andere festzulegen.
- Oder tippen Sie direkt einen 3-stelligen numerischen Wert (z. B. 755) ein.
- Die symbolische Notation und der
chmod-Befehl aktualisieren sich in Echtzeit. - Klicken Sie auf Befehl kopieren, um den vollständigen chmod-Befehl zu kopieren.
Berechtigungs-Referenz
| Nummer | Berechtigung | Symbol |
|---|---|---|
| 0 | Keine Berechtigung | --- |
| 1 | Nur Ausführen | --x |
| 2 | Nur Schreiben | -w- |
| 3 | Schreiben + Ausführen | -wx |
| 4 | Nur Lesen | r-- |
| 5 | Lesen + Ausführen | r-x |
| 6 | Lesen + Schreiben | rw- |
| 7 | Lesen + Schreiben + Ausführen | rwx |
Häufige Fragen
Was bedeutet chmod 755?
755 bedeutet, dass der Besitzer lesen, schreiben und ausführen kann (7), während Gruppe und Andere lesen und ausführen, aber nicht schreiben können (5). Das ist die häufigste Berechtigung für Verzeichnisse und Skripte.
Was ist der Unterschied zwischen 644 und 755?
644 (rw-r--r--) erlaubt dem Besitzer Lesen/Schreiben und allen anderen nur Lesen · typisch für Dateien. 755 (rwxr-xr-x) ergänzt die Ausführungsberechtigung · typisch für Verzeichnisse und Skripte.
Funktioniert das auch für Verzeichnisse?
Ja. Die numerischen Berechtigungen funktionieren genauso. Bei Verzeichnissen bedeutet „Ausführen" die Möglichkeit, das Verzeichnis zu betreten und auf seinen Inhalt zuzugreifen.
Das Unix-Berechtigungsmodell in 9 Bit
Jede Datei und jedes Verzeichnis auf einem unixartigen System trägt einen „Modus“, eine kleine Ganzzahl, die festhält, wer was tun darf. Das Modell ist seit Sixth Edition Unix (Mai 1975) im Wesentlichen unverändert, wobei die frühesten Handbucheinträge zu chmod in Version 1 Unix (November 1971) auftauchten. Es kodiert neun Berechtigungsbits, angeordnet als drei Tripel aus Lesen / Schreiben / Ausführen, je ein Tripel für den Eigentümer der Datei, ihre Gruppe und alle anderen:
Owner Group Others
r w x r w x r w x
4 2 1 4 2 1 4 2 1
Jede Dreibitgruppe ist genau eine Oktalziffer, weil drei Bit 2³ = 8 verschiedene Werte kodieren (0 bis 7). Die Gewichte 4, 2, 1 sind 2², 2¹, 2⁰. Das Addieren einer beliebigen Kombination aus Lesen (4) + Schreiben (2) + Ausführen (1) ergibt die acht möglichen Ziffern pro Klasse ohne Kollision, das ist die gesamte Zuordnung von Oktal zu Symbolisch. chmod 755 bedeutet daher rwx (4+2+1=7) für den Eigentümer, r-x (4+1=5) für die Gruppe und r-x für alle anderen.
Die 10-Zeichen-Zeichenkette, die Sie in ls -l sehen, sind dieselben Daten plus eine zusätzliche Spalte vorne für den Dateityp: - für eine reguläre Datei, d für ein Verzeichnis, l für einen Symlink, c für ein zeichenorientiertes Gerät, b für ein blockorientiertes Gerät, p für eine benannte Pipe, s für einen Socket. Die übrigen neun Zeichen sind die Berechtigungstripel.
Symbolische Notation: chmod u+x file
Oktalmodi überschreiben alle neun Bit auf einmal. Symbolische Modi sind nicht-destruktiv, sie schalten nur die Bits um, die Sie benennen. Die Grammatik lautet wer + op + recht:
- wer:
uBenutzer/Eigentümer,gGruppe,oandere,aalle (= ugo). - op:
+fügt hinzu,-entfernt,=setzt exakt (und löscht die übrigen). - recht:
r,w,x, dazu die SonderbuchstabenX(ausführen nur, wenn das Ziel ein Verzeichnis ist oder bereits in mindestens einer Klasse ausführbar ist),s(setuid / setgid),t(sticky / eingeschränktes Löschen). Sie können mitu,g,oauch von einer anderen Klasse kopieren: z. B. setztg=udie Gruppenrechte identisch zum Eigentümer.
Nützliche Beispiele:
chmod u+x script.sh: Ausführen nur für den Eigentümer hinzufügen.chmod g-w shared.log: Schreiben für die Gruppe entfernen.chmod a=rw note.txt: alle auf Lesen/Schreiben setzen, Ausführen für alle löschen.chmod o= secret.key: alle Bits für „andere“ löschen.chmod -R u+rwX,go+rX /var/www: rekursiv dem Eigentümer vollen Zugriff und anderen Lesezugriff gewähren; das großeXfügt Ausführen nur bei Verzeichnissen oder Dateien hinzu, die es bereits in irgendeiner Klasse haben, sodass nicht versehentlich jede Textdatei ausführbar wird.
Numerische Modi sind explizit und idempotent (chmod 755 bedeutet immer dieselben neun Bit). Symbolische Modi sind chirurgisch genau (chmod g+w schaltet nur ein Bit um). Produktionsskripte bevorzugen tendenziell numerische Angaben wegen der Klarheit in Audit-Protokollen; Operatoren, die in der Shell tippen, bevorzugen tendenziell symbolische für schrittweise Anpassungen.
Gängige Modi und wofür sie da sind
| Modus | Symbolisch | Typische Verwendung |
|---|---|---|
| 755 | rwxr-xr-x | Öffentliche ausführbare Dateien und Standardverzeichnisse, /usr/bin/*, Web-Docroots, Git-Arbeitsverzeichnisse |
| 644 | rw-r--r-- | Standardmäßige reguläre Dateien, Konfiguration, Quellcode, Dokumente |
| 700 | rwx------ | Privates Verzeichnis, ~/.ssh, persönliche Dokumente, die niemand sonst sehen soll |
| 600 | rw------- | Private Datei, ~/.ssh/id_rsa, ~/.gnupg/*, Passwortdateien |
| 444 | r--r--r-- | Schreibgeschützt für alle, feste Referenzdaten, Cargo-Registry-Indizes |
| 750 | rwxr-x--- | Eigentümer voll, Gruppe Lesen/Durchqueren, andere nichts, gruppengemeinsames Dienstverzeichnis |
| 777 | rwxrwxrwx | Fast immer falsch. Siehe unten. |
Warum chmod 777 fast immer falsch ist
Eine Datei auf 777 zu setzen, macht sie für alle lesbar, für alle beschreibbar und für alle ausführbar. Jeder Benutzer der Maschine (einschließlich unprivilegierter Dienstkonten und jedes jemals kompromittierten Prozesses) kann den Inhalt der Datei lesen, sie ändern und ausführen. Der übliche Tutorial-Rat „einfach chmod 777, bis es funktioniert“ ist ein Sicherheits-Antipattern, das für unzählige echte Sicherheitsverletzungen verantwortlich war: für alle beschreibbare Konfigurationsdateien, die manipuliert werden, für alle beschreibbare Web-Verzeichnisse, die zu Defacement-Vektoren werden, für alle beschreibbare Protokolldateien, die Protokollfälschung ermöglichen, für alle ausführbare Verzeichnisse, die beliebige Codeausführung ermöglichen.
Wenn ein Berechtigungsfehler Sie blockiert, besteht die richtige Lösung fast immer darin, den Eigentümer der Datei (mit chown) oder ihre Gruppe (mit chgrp) zu ändern, sodass der Benutzer, der Zugriff braucht, die Datei tatsächlich besitzt oder mitbesitzt, und nicht darin, die Zugriffskontrollen für alle zu entfernen.
Sonderbits: setuid, setgid, sticky
Eine vierte Oktalziffer, dem Modus vorangestellt, schaltet drei Sonderbits frei, allesamt Relikte des ursprünglichen Unix-Designs:
- 4xxx, setuid (set user ID). Auf einer ausführbaren Datei gesetzt, läuft das Programm mit den Rechten des Eigentümers statt denen des Aufrufenden. Das klassische Beispiel ist
passwd: Jeder Benutzer kann es ausführen, aber nur weil es setuid-root ist, kann es in/etc/shadowschreiben. Setuid ist eine große Sicherheitsangriffsfläche, modernes Linux ersetzt es zunehmend durch File Capabilities (feinere Berechtigungsbits übersetcap), und viele Distributionen entfernen setuid-Bits schrittweise. - 2xxx, setgid (set group ID). Auf einer ausführbaren Datei läuft es mit der Gruppe der Datei; auf einem Verzeichnis erben darin erstellte Dateien die Gruppe des Verzeichnisses statt der primären Gruppe des Erstellers, nützlich für gemeinsam genutzte Projektverzeichnisse.
- 1xxx, Sticky-Bit. Auf einem Verzeichnis können nur der Dateieigentümer (oder root) darin liegende Dateien löschen oder umbenennen, unabhängig vom Schreibrecht auf dem Verzeichnis selbst. Die kanonische Verwendung ist
/tmp: für alle beschreibbar, sodass jeder Benutzer Dateien anlegen kann, aber das Sticky-Bit hindert Benutzer daran, die Dateien der anderen zu löschen.
Die Anzeige von ls -l ersetzt das Ausführen-Zeichen durch s, S, t oder T, wenn diese Bits gesetzt sind (Großbuchstaben bedeuten, dass das Bit gesetzt ist, das zugrunde liegende Ausführen-Bit aber nicht).
umask: das Gegenstück zu chmod
chmod setzt Berechtigungen auf bestehenden Dateien. umask bestimmt die Standard-Berechtigungen von Dateien, die Sie erstellen, indem es als subtraktive Maske wirkt. Die Arithmetik: Eine neue reguläre Datei wäre 666 (rw-rw-rw-), ein neues Verzeichnis 777, abzüglich dessen, was in der umask gesetzt ist. Gängige Werte:
- umask 022 (Standard auf den meisten Linux-Distributionen) entfernt Schreibrecht von Gruppe und anderen. Neue Dateien landen bei 644, neue Verzeichnisse bei 755.
- umask 002 (Standard in manchen gemeinsam genutzten Entwicklungsumgebungen) entfernt Schreibrecht nur von anderen. Neue Dateien bei 664, Verzeichnisse bei 775. Nützlich, wenn ein Entwicklungsteam die Dateien der anderen lesen und bearbeiten möchte.
- umask 077 (verbreitet auf privaten Servern und sicherheitsbewussten Setups) entfernt alle Berechtigungen für Gruppe und andere. Neue Dateien bei 600, Verzeichnisse bei 700.
Wenn Sie umask ohne Argumente eingeben, wird der aktuelle Wert angezeigt. Es in der Shell-Initialisierung (~/.bashrc, ~/.zshrc) oder in /etc/login.defs zu setzen, gilt für die gesamte Sitzung.
Dateien vs. Verzeichnisse, unterschiedliche Bedeutungen von x
Dieselben r/w/x-Bits bedeuten bei Verzeichnissen etwas subtil anderes als bei Dateien:
- Lesen auf einem Verzeichnis: seinen Inhalt auflisten. Ohne Leserecht können Sie auf einen bekannten Dateinamen im Verzeichnis dennoch zugreifen, sofern Sie Ausführungsrecht haben, aber
lsfunktioniert nicht. - Schreiben auf einem Verzeichnis: Einträge darin erstellen, löschen oder umbenennen. Hinweis: Das ist unabhängig vom Schreibrecht auf den Dateien selbst. Schreibrecht auf dem Verzeichnis plus das Sticky-Bit (1xxx) ist das, was kontrollierte, von mehreren Benutzern gemeinsam genutzte Verzeichnisse wie
/tmpermöglicht. - Ausführen auf einem Verzeichnis: es durchqueren (mit
cdhineinwechseln, auf benannte Einträge darin zugreifen). Ein Verzeichnis ohne Ausführungsrecht ist praktisch eine Sackgasse. Viele subtile „permission denied“-Probleme rühren von dieser Unterscheidung her: Sie haben Leserecht auf einem tief liegenden Verzeichnis, aber kein Ausführungsrecht auf einem seiner übergeordneten Verzeichnisse, sodass Sie es nicht erreichen können.
Rekursives chmod und das find-Muster
chmod -R 755 /var/www wendet denselben Modus auf jede Datei und jedes Verzeichnis im Baum an, was fast immer falsch ist, weil Dateien und Verzeichnisse unterschiedliche Modi benötigen (z. B. 644 für Dateien, 755 für Verzeichnisse). Die korrekte Redewendung verwendet find:
find /var/www -type f -exec chmod 644 {} +
find /var/www -type d -exec chmod 755 {} +
Oder, gleichwertig, mit dem großen X von GNU-chmod: chmod -R u=rwX,go=rX /var/www gewährt Ausführen nur bei Verzeichnissen und bei Dateien, die irgendwo bereits Ausführungsrecht hatten, genau das Ergebnis, das Sie normalerweise wollen.
Symlinks, ACLs und wie Linux das Modell erweitert
Zwei Verfeinerungen, die man kennen sollte:
- Symlinks haben einen eigenen Modus (immer 777), der aber ignoriert wird.
chmodfolgt standardmäßig dem Link und ändert das Ziel. Verwenden Siechmod -hauf BSD oderchmod --no-dereferenceauf GNU, um auf dem Link selbst zu arbeiten, auch wenn es dafür selten einen Grund gibt. - POSIX-ACLs (
setfacl,getfacl) erweitern das Grundmodell um Einträge pro Benutzer und pro Gruppe. Eine Datei kann einem bestimmten Benutzer Schreibrecht gewähren, ohne die Standard-Modusbits anzutasten.ls -lzeigt bei Dateien mit ACLs ein nachgestelltes+. macOS, die meisten Linux-Dateisysteme und die BSDs unterstützen sie alle; sie sind optional, und viele Systemadministratoren bleiben lieber beim einfacheren klassischen Modus. - Windows-NTFS-ACLs sind noch reichhaltiger, Einträge pro Benutzer / pro Gruppe mit expliziten Erlauben- / Verweigern-Bits und vererbbarer Vererbung. Das
chmod-Modell lässt sich nicht direkt übertragen. Cygwin und WSL emulieren es unvollkommen auf NTFS.
Weitere Fragen
Warum wird mein SSH-Schlüssel mit „permissions are too open“ abgelehnt?
Weil der OpenSSH-Client sich weigert, einen privaten Schlüssel zu verwenden, der für die Gruppe oder für alle lesbar ist, in der Annahme, dass alles, was andere lesen können, kein Anmeldegeheimnis sein sollte. Die Lösung ist chmod 600 ~/.ssh/id_rsa (und chmod 700 ~/.ssh auf dem Verzeichnis selbst). Dieselbe Logik gilt für ~/.gnupg/ und die meisten anderen Anmeldedaten-Speicher.
Was ist der Unterschied zwischen chmod und chown?
chmod ändert die Modusbits, also was Eigentümer/Gruppe/andere tun dürfen. chown ändert, wer der Eigentümer ist. Häufig brauchen Sie beides: Eine Datei, die „der falsche Benutzer nicht lesen kann“, muss meist nicht in ihren Berechtigungen geöffnet werden; sie muss dem Benutzer gehören, der Zugriff braucht. Versuchen Sie zuerst chown myuser:mygroup file.
Sollte ich 666 für Protokolldateien verwenden?
Fast nie. Für alle beschreibbare Protokolldateien erlauben es jedem Prozess (auch einem kompromittierten Dienst, der als Benutzer mit geringen Rechten läuft), Protokolleinträge zu fälschen oder das Protokoll zu löschen. Das Standardmuster ist, das Protokollverzeichnis für eine bestimmte Protokollgruppe beschreibbar zu machen (adm auf Debian, wheel auf BSD usw.) und die betreffenden Dienste dieser Gruppe hinzuzufügen, oder logrotate plus einen Logging-Daemon (rsyslog, systemd-journald) zu verwenden, der die Dateieigentümerschaft für Sie übernimmt.
Berücksichtigt dieser Rechner die Sonderbits?
Nein, er deckt die grundlegenden neun Berechtigungsbits ab (den standardmäßigen 3-stelligen Modus). Für setuid (4xxx), setgid (2xxx) oder sticky (1xxx) würden Sie die führende Ziffer manuell voranstellen. Die überwiegende Mehrheit der alltäglichen chmod-Arbeit verwendet 3-stellige Modi und rührt die Sonderbits nie an.
Werden Daten an einen Server gesendet?
Nein. Die Umwandlung zwischen Schaltern ↔ Oktal ↔ Symbolisch ist reine Arithmetik, berechnet in Ihrem Browser. Die Seite funktioniert offline, sobald sie geladen ist.