Chmod-Rechner

Interaktiver Linux-/Unix-Datei-Berechtigungs-Calc.

Keine Daten verlassen Ihr Gerät
Lesen (4)
Schreiben (2)
Ausführen (1)
Besitzer
Gruppe
Andere
Numerisch
Symbolisch ---------
chmod 000 filename

Gängige Berechtigungen

So funktioniert es

  1. Schalten Sie die Kontrollkästchen, um Lese-, Schreib- und Ausführungsrechte für Besitzer, Gruppe und Andere festzulegen.
  2. Oder tippen Sie direkt einen 3-stelligen numerischen Wert (z. B. 755) ein.
  3. Die symbolische Notation und der chmod-Befehl aktualisieren sich in Echtzeit.
  4. Klicken Sie auf Befehl kopieren, um den vollständigen chmod-Befehl zu kopieren.

Berechtigungs-Referenz

Nummer Berechtigung Symbol
0Keine Berechtigung---
1Nur Ausführen--x
2Nur Schreiben-w-
3Schreiben + Ausführen-wx
4Nur Lesenr--
5Lesen + Ausführenr-x
6Lesen + Schreibenrw-
7Lesen + Schreiben + Ausführenrwx

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:

Nützliche Beispiele:

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

ModusSymbolischTypische Verwendung
755rwxr-xr-xÖffentliche ausführbare Dateien und Standardverzeichnisse, /usr/bin/*, Web-Docroots, Git-Arbeitsverzeichnisse
644rw-r--r--Standardmäßige reguläre Dateien, Konfiguration, Quellcode, Dokumente
700rwx------Privates Verzeichnis, ~/.ssh, persönliche Dokumente, die niemand sonst sehen soll
600rw-------Private Datei, ~/.ssh/id_rsa, ~/.gnupg/*, Passwortdateien
444r--r--r--Schreibgeschützt für alle, feste Referenzdaten, Cargo-Registry-Indizes
750rwxr-x---Eigentümer voll, Gruppe Lesen/Durchqueren, andere nichts, gruppengemeinsames Dienstverzeichnis
777rwxrwxrwxFast 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:

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:

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:

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:

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.

Verwandte Tools

.htaccess-Generator Cron-Ausdruck-Generator Kostenloser Datei-Hash-Rechner