Chmod-Rechner

Berechnen Sie Linux-Dateirechte in beide Richtungen. Kreuzen Sie Lesen, Schreiben und Ausführen für den Eigentümer, die Gruppe und alle anderen an, um den Oktalmodus und den passenden Befehl zu erhalten, oder fügen Sie 755, rwxr-xr-x, u+x oder eine ganze ls -l-Zeile ein und sehen Sie genau, was sie bedeutet.

Wird in Ihrem Browser berechnet · nichts wird irgendwohin gesendet · Verhalten nach POSIX und GNU coreutils
Dateien
Verzeichnisse

Geben Sie 755 ein, fügen Sie rwxr-xr-x oder eine ganze ls -l-Zeile ein, oder ändern Sie den Modus mit u+x oder go-w.

Typ
Lesen4Schreiben2Ausführen1Ziffer
Eigentümer4+2+1=7
Gruppe4+1=5
Alle anderen4+1=5
Spezialnichts=0

In einfachen Worten

  • Der Eigentümer kann es lesen, es ändern und es ausführen.
  • Die Gruppe und alle anderen können es lesen und es ausführen.
  • Diese Datei lässt sich ausführen.

Wird in Ihrem Browser berechnet. Nichts wird irgendwohin gesendet.

Was macht chmod?

chmod legt fest, wer eine Datei lesen, schreiben und ausführen darf. Ein Modus besteht aus zwölf Bits und wird meist als drei oder vier Oktalziffern geschrieben: 755, 644, 2775.

Jede der drei Ziffern gehört zu einer Klasse – dem Eigentümer der Datei, der Gruppe der Datei und allen anderen – und jede Ziffer ist die Summe aus drei Zahlen: Lesen ist 4, Schreiben ist 2, Ausführen ist 1. Also ist 7 Lesen, Schreiben und Ausführen, 5 Lesen und Ausführen, 6 Lesen und Schreiben, 4 nur Lesen. Das ist das ganze System. chmod 755 script.sh heißt: Eigentümer 7, Gruppe 5, andere 5.

Die vierte Ziffer, wenn es eine gibt, trägt die drei Spezial-Bits – Setuid 4, Setgid 2 und das Sticky-Bit 1 – und entfällt, wenn keines gesetzt ist. Der Rechner oben zeigt alle vier Ziffern auf einmal samt der Rechnung dahinter, sodass Sie die Zahlen nicht mehr nachschlagen müssen.

Ein Modus besteht aus zwölf Bitschmod 755 script.sh
Vorherscript.sh
Spezials4s2t10
Eigentümerr4w2x16
Grupper4w2x14
Alle anderenr4w2x14
-rw-r--r--0644
Nachherscript.sh
Spezials4s2t10
Eigentümerr4w2x17
Grupper4w2x15
Alle anderenr4w2x15
-rwxr-xr-x0755
chmod 755 setzt jedes Bit des Modus auf einmal: Ausgehend von 644 schaltet es die drei Ausführen-Bits ein, eines je Klasse. Die drei Bits jeder Klasse ergeben zusammen eine Oktalziffer.
Chmod-Rechner mit Modus 755 als Rechtetabelle, den Oktalziffern, der symbolischen Form und dem chmod-BefehlChmod-Rechner mit Modus 755 als Rechtetabelle, den Oktalziffern, der symbolischen Form und dem chmod-BefehlAnkreuzen oder tippenDie Tabelle und die Felder sind dasselbe: Ändern Sie eines, und der Rest folgt.Jede Ziffer4 + 2 + 1 für jede Klasse, damit Sie die Zahl nicht mehr auswendig lernen müssen.Alles einfügen755, rwxr-xr-x, u+x oder eine ganze ls -l-Zeile: Alle vier werden gelesen.Der BefehlAus Ihrem gewählten Modus gebaut, mit der richtigen Zahl von Ziffern und einer rekursiven Form, die Ihre Dateien nicht plattmacht.Was es bedeutetEin einfacher Satz, dazu die Warnungen, die ein Modus verdient.
Modus 755 zerlegt: die Tabelle, die Rechnung hinter jeder Ziffer, die symbolische Form und der Befehl zum Ausführen. Wählen Sie eine Nummer, um zu sehen, was jeder Teil zeigt.

So funktionieren Dateirechte unter Linux

Jede Datei hat einen Eigentümer, eine Gruppe und einen Modus. Der Modus gibt jeder von drei Klassen drei Rechte – neun Bits –, und gleich nach dem Dateityp-Zeichen gibt ls -l genau diese neun Zeichen aus.

-rw-r--r-- ist eine Datei (-), die ihr Eigentümer lesen und schreiben darf und die ihre Gruppe und alle anderen nur lesen dürfen: Modus 644. drwxr-xr-x ist ein Verzeichnis (d) mit 755. Das erste Zeichen ist der Typ: - eine Datei, d ein Verzeichnis, l ein symbolischer Link und b, c, p oder s für die Sonderarten. Fügen Sie eine solche Zeile in den Rechner ein, und er liest Modus und Typ daraus ab.

Bei einem Verzeichnis bedeuten die drei Rechte etwas anderes als bei einer Datei. Lesen erlaubt, die Namen darin aufzulisten. Ausführen erlaubt, es zu betreten und die Dateien zu erreichen, deren Namen Sie schon kennen. Schreiben erlaubt zusammen mit Ausführen, Einträge anzulegen und zu löschen – deshalb hängt das Löschen einer Datei von den Rechten des Verzeichnisses ab, nicht von denen der Datei. Ein Verzeichnis mit Lesen, aber ohne Ausführen können Sie auflisten, aber nicht öffnen.

Was ls -l zuerst ausgibtls -l notes.txt
RechtBei einer DateiBei einem Verzeichnis
r4Lesen, was darin stehtDie Namen darin auflisten
w2Ändern, was darin stehtEinträge anlegen, umbenennen und löschen
x1Als Programm ausführenHineingehen und öffnen, was darin liegt

Andere erste Zeichen: d ein Verzeichnis, l ein symbolischer Link und b, c, p oder s für die Sonderarten.

Was bedeutet chmod 755?

755 heißt: Der Eigentümer darf lesen, schreiben und ausführen, alle anderen dürfen lesen und ausführen, aber nicht ändern. Es ist der übliche Modus für ein Verzeichnis und für ein Programm.

Ziffer für Ziffer: 7 = 4 + 2 + 1, also liest, schreibt und führt der Eigentümer aus. 5 = 4 + 1 für die Gruppe und noch einmal für alle anderen, also lesen und führen beide aus. Ausgeschrieben ist das rwxr-xr-x, als symbolischer Befehl chmod u=rwx,g=rx,o=rx.

Nehmen Sie es für Verzeichnisse, die man betreten können soll, und für Skripte und Programme, die man ausführen können soll. Nehmen Sie es nicht für etwas Geheimes: Die letzte 5 heißt, dass jedes Konto auf dem Rechner die Datei lesen kann. Für die Dateien eines Webservers empfiehlt die Dokumentation von WordPress selbst 755 oder 750 für Verzeichnisse und 644 oder 640 für Dateien.

755, Ziffer für Zifferchmod 755
7=r4w2x14+2+1rwxEigentümer
5=r4-2x14+1r-xGruppe
5=r4-2x14+1r-xAlle anderen
Geeignet für
  • Verzeichnisse, die man betreten muss
  • Skripte und Programme
Nicht geeignet für
  • Alles Geheime: Alle können es lesen

Die Dokumentation von WordPress selbst: Verzeichnisse 755 oder 750, Dateien 644 oder 640.

chmod 644 oder 755: welches brauche ich?

644 für Dateien, 755 für Verzeichnisse und für alles, was ausgeführt werden muss. Der einzige Unterschied ist das Ausführen-Bit.

644 ist rw-r--r--: Der Eigentümer kann es ändern, alle können es lesen, niemand kann es ausführen. Das passt für HTML, CSS, Bilder, Konfigurations- und Quelldateien. 755 ist rwxr-xr-x: dasselbe, dazu das Ausführen-Bit für alle drei Klassen. Ein Verzeichnis braucht es, sonst kann niemand es betreten, und ein Skript braucht es, sonst verweigert die Shell die Ausführung.

Der Fehler, den Sie vermeiden sollten, ist chmod -R 755 über eine ganze Website, das jedes Bild und jede .php-Datei ausführbar macht. Die zwei find-Befehle, die der Rechner schreibt, geben Verzeichnissen und Dateien in einem Durchgang verschiedene Modi, und zwar die, die Sie tatsächlich gewählt haben, nicht ein Paar aus einem Blogbeitrag.

Der einzige Unterschied ist das Ausführen-Bit644 · 755
644
LesenSchreibenAusführen
Eigentümerrw-6
Grupper--4
Anderer--4

Dateien: HTML, CSS, Bilder, Konfiguration, Quellcode

755
LesenSchreibenAusführen
Eigentümerrwx7
Grupper-x5
Anderer-x5

Verzeichnisse, Skripte und Programme

Falsch herum
  • 755Eine Datei mit 755 lässt sich ausführen, und das gilt auch für jedes Bild und jede .php-Datei unter einem chmod -R 755.
  • 644Ein Verzeichnis mit 644 zeigt seine Namen, aber niemand kann es betreten oder darin etwas öffnen.

Was macht chmod 777, und ist es sicher?

777 erlaubt jedem Konto auf dem Rechner, die Datei zu lesen, zu ändern und auszuführen. Es ist fast nie die richtige Antwort, und die Dokumentation von WordPress selbst sagt, dass kein Verzeichnis jemals 777 bekommen sollte.

Für alle beschreibbar heißt: Jeder, der sich anmelden kann – oder alles, was als irgendein Benutzer läuft, auch ein kompromittierter Prozess –, kann den Inhalt der Datei ersetzen. Ist die Datei ein Skript, das der Webserver ausführt, haben Sie den Server aus der Hand gegeben. Die Seite zu Berechtigungen bei WordPress empfiehlt 755 oder 750 für Verzeichnisse und 644 oder 640 für Dateien und sagt, dass kein Verzeichnis je 777 haben sollte, auch kein Upload-Verzeichnis.

Kann eine Webanwendung nicht in ein Verzeichnis schreiben, liegt die Lösung beim Eigentümer oder der Gruppe, nicht beim Modus: Übertragen Sie das Verzeichnis mit chown an den Benutzer, als der der Webserver läuft, oder nehmen Sie diesen Benutzer in eine gemeinsame Gruppe auf und nutzen Sie 775. Der Rechner warnt immer, wenn ein Modus allen das Schreiben erlaubt: bei einer Datei stets, bei einem Verzeichnis außer wenn das Sticky-Bit verhindert, dass man gegenseitig Dateien löscht.

Wer bei 777 schreiben kannchmod 777
777Alle können es ändern
LesenSchreibenAusführen
Eigentümerrwx7
Grupperwx7
Andererwx7
  1. 1Jedes Konto oder jeder Prozess, der als eines läuft
  2. 2ersetzt das Skript
  3. 3und der Webserver führt es aus
Was die Dokumentation verlangt

WordPress · Verzeichnisse 755 oder 750, Dateien 644 oder 640.

„No directories should ever be given 777, even upload directories.“

Die Lösung liegt beim Eigentümer oder der Gruppe, nicht beim Modus: Übertragen Sie es mit chown an den Benutzer des Webservers, oder teilen Sie eine Gruppe und nehmen Sie 775.

Warum sagt SSH, die Rechte meines Schlüssels seien zu offen?

OpenSSH weigert sich, einen privaten Schlüssel zu benutzen, den jemand außer seinem Eigentümer lesen kann. Setzen Sie den Schlüssel auf 600 und das Verzeichnis .ssh auf 700.

Die genaue Meldung lautet Permissions 0644 for '<path>' are too open., gefolgt von It is required that your private key files are NOT accessible by others. Der Test dahinter ist schroff: Gehört Ihnen die Datei und ist irgendein Gruppen- oder Others-Bit gesetzt, wird der Schlüssel abgelehnt. Deshalb scheitert auch 640, und deshalb ist 600 die Antwort und nicht „etwas weniger als 644“.

chmod 600 ~/.ssh/id_ed25519 und chmod 700 ~/.ssh beheben es. Der öffentliche Schlüssel darf für alle lesbar sein – nur der private Schlüssel und das Verzeichnis zählen hier. Wählen Sie oben unter den häufigen Modi SSH-Schlüssel, und der Rechner schreibt beide Befehle für Sie.

Was ssh ausgibt
$ssh you@server.example
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/home/you/.ssh/id_ed25519' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Was OpenSSH prüft
Die Dateien und die Modi, die bestehen
  • ~/.ssh/700drwx------Das Verzeichnis
  • id_ed25519600-rw-------Ihr privater Schlüssel
  • id_ed25519.pub644-rw-r--r--Der öffentliche Schlüssel: Jeder darf ihn lesen
  • config600-rw-------Nicht für andere beschreibbar
Der Test, Bit für Bit
  • 644rw-r--r--Abgelehnt
  • 640rw-r-----Abgelehnt
  • 600rw-------Akzeptiert
  • 400r--------Akzeptiert

Gruppe und alle anderen: alle müssen aus sein

Symbolischer Modus: u, g, o, a mit +, - und =

chmod u+x script.sh fügt ein Bit hinzu, ohne den Rest anzutasten. + fügt hinzu, - entfernt, = setzt eine Klasse genau auf das, was Sie aufführen.

Die Grammatik lautet [wer][Operator][Rechte], mit Kommas zwischen den Klauseln: u der Eigentümer, g die Gruppe, o alle anderen, a alle drei. go-w nimmt also der Gruppe und den anderen das Schreiben, a=rwx setzt alles, und u=rw,go=r ist eine andere Schreibweise für 644. Fügen Sie eines davon in den Rechner oben ein, und er zeigt, welche Bits sich ändern, vorher und nachher.

Zwei Teile der Grammatik sind leicht falsch zu verstehen, und der Rechner befolgt beide. X – ein großes X – fügt das Ausführen-Bit nur einem Verzeichnis hinzu oder einer Datei, die irgendwo schon ausführbar ist; deshalb ist chmod -R u=rwX,go=rX bei einem gemischten Baum sicher. Und eine Klausel ganz ohne Klasse, etwa +x, ist nicht dasselbe wie a+x: Die in Ihrer umask gesetzten Bits bleiben unberührt, sodass bei der üblichen umask 022 chmod +rwx bei einer 644-Datei 755 ergibt, chmod a+rwx dagegen 777.

wer · Operator · Rechtechmod u+x script.sh
  • uder Eigentümer
  • gdie Gruppe
  • oalle anderen
  • aalle drei
  • +hinzufügen
  • -wegnehmen
  • =genau setzen auf
  • rlesen
  • wschreiben
  • xausführen
  • Xausführen, nur bei Verzeichnissen und bei Dateien, die schon ausführbar sind
  • sSetuid oder Setgid
  • tSticky
Durchgerechnete Beispiele
ÄnderungVorherNachher
u+x644rw-r--r--744rwxr--r--Ausführen für den Eigentümer, sonst nichts angetastet.
go-w775rwxrwxr-x755rwxr-xr-xSchreiben der Gruppe und allen anderen weggenommen.
a=r755rwxr-xr-x444r--r--r--Alle drei auf Lesen gesetzt, sonst nichts.
u=rw,go=r777rwxrwxrwx644rw-r--r--Drei Klauseln: eine andere Schreibweise für 644.
+rwx644rw-r--r--755rwxr-xr-xKeine Klasse: Die Bits der umask (022) werden nicht gesetzt, also erhalten die Gruppe und alle anderen kein Schreiben.
a+rwx644rw-r--r--777rwxrwxrwxMit a zählt die umask nicht: Alles wird gesetzt.
a+Xbei einem Verzeichnis644rw-r--r--755rwxr-xr-xGroßes X bei einem Verzeichnis: Ausführen wird hinzugefügt, weil es eines ist.
a+Xbei einer Datei644rw-r--r--644rw-r--r--Großes X bei einer Datei, die niemand ausführen kann: nichts hinzugefügt.

Setuid, Setgid und das Sticky-Bit

Die vierte Ziffer. Bei einer Datei ändern Setuid und Setgid, als welches Konto ein Programm läuft. Bei einem Verzeichnis bestimmt Setgid die Gruppe neuer Dateien und das Sticky-Bit, wer sie löschen darf.

Setuid (4000) bei einer ausführbaren Datei lässt sie als ihr Eigentümer laufen statt als Sie – passwd ist mit Setuid installiert, damit es mit den Rechten von root läuft, wenn Sie Ihr Passwort ändern. Setgid (2000) tut dasselbe für die Gruppe. Bei einem Verzeichnis tut Setgid etwas anderes und viel Nützlicheres: Neue Dateien darin erben die Gruppe des Verzeichnisses statt der des Erstellers, so bleibt ein gemeinsamer Projektordner gemeinsam. Linux dokumentiert für das Setuid-Bit bei einem Verzeichnis keine Bedeutung; unter macOS und den BSDs kann es neue Dateien den Eigentümer des Verzeichnisses erben lassen, wenn das Dateisystem mit dieser Option eingehängt wurde.

Das Sticky-Bit (1000) bei einem Verzeichnis verhindert, dass man gegenseitig Dateien löscht: Nur der Eigentümer der Datei, der Eigentümer des Verzeichnisses oder root dürfen einen Eintrag entfernen oder umbenennen. /tmp hat genau deshalb den Modus 1777 – alle dürfen darin schreiben, niemand darf die Arbeit eines anderen löschen. Bei einer normalen Datei ignorieren macOS und die BSDs das Sticky-Bit, und laut GNU-Handbuch hat es dort nur auf manchen älteren Systemen eine Bedeutung. Eine Falle: chmod 755 somedir – oder chmod 0755 somedir – löscht ein Setgid-Bit, das bei einem Verzeichnis schon gesetzt ist, nicht, weil GNU chmod es bei jedem numerischen Modus mit weniger als fünf Ziffern absichtlich behält – POSIX verlangt das Löschen nur bei einer regulären Datei. Nehmen Sie g-s oder das fünfstellige chmod 00755; der Rechner schreibt die fünfstellige Form für Sie, wann immer Sie sie brauchen.

Setuid4755

Ein Programm läuft als Eigentümer der Datei, nicht als Sie.

Linux-rwsr-xr-x root root /usr/bin/passwd

passwd ist so installiert und läuft daher mit den Rechten von root, wenn Sie Ihr Passwort ändern.

Bei einem Verzeichnis: unter Linux keine dokumentierte Bedeutung. Unter macOS und den BSDs erhalten neue Dateien den Eigentümer des Verzeichnisses, wenn das Dateisystem mit dieser Option eingehängt wurde.

Setgid2775

In einem Verzeichnis erhalten neue Dateien die Gruppe des Verzeichnisses statt Ihrer.

Linuxdrwxrwsr-x you devs project/

Ein gemeinsames Projektverzeichnis bleibt gemeinsam: Jede neue Datei gehört dem Team.

Unter macOS und den BSDs erhält eine neue Datei immer die Gruppe ihres Verzeichnisses, mit oder ohne dieses Bit.

Sticky1777

In einem Verzeichnis dürfen nur der Eigentümer der Datei, der Eigentümer des Verzeichnisses oder root eine Datei löschen oder umbenennen.

macOSdrwxrwxrwt root wheel /private/tmp

Alle dürfen in /tmp schreiben, und niemand darf die Dateien eines anderen löschen.

Bei einer Datei wird das Sticky-Bit unter macOS und den BSDs ignoriert.

Die GNU-Falle: chmod 755 bei einem Verzeichnis lässt dessen Setgid-Bit gesetzt.

$chmod 755 project → drwxr-sr-xLöschen Sie es mit fünf Ziffern oder mit Buchstaben:$chmod 00755 project → drwxr-xr-x$chmod g-s project → drwxr-xr-x

umask: was neue Dateien erhalten

Eine neue Datei beginnt bei 666 und ein neues Verzeichnis bei 777, dann wird jedes in der umask gesetzte Bit abgeschaltet. Die übliche umask 022 ergibt 644 und 755.

umask ist keine Subtraktion, sondern eine Maske: Jedes in der umask gesetzte Bit wird im Modus, den das Programm angefordert hat, abgeschaltet. Mit umask 077 ist eine neue Datei 600 und ein neues Verzeichnis 700 – standardmäßig privat. Mit umask 002 erhalten Sie 664 und 775: Die Gruppe darf dann auch schreiben.

Eine umask kann nie eine Datei ausführbar machen, weil der Grundmodus einer Datei gar keine Ausführen-Bits hat – nur Verzeichnisse beginnen bei 777. Deshalb ist ein frisch angelegtes Skript nie ausführbar, bis Sie chmod +x sagen. Wechseln Sie oben zum Reiter umask, um zu sehen, was eine beliebige umask ergibt, und öffnen Sie jedes Ergebnis direkt im Rechner.

Bit für Bit abgeschaltetumask 022
Eine neue Datei
Beginnt beirw-rw-rw-666
umask····w··w·022
Ergibtrw-r--r--644
Ein neues Verzeichnis
Beginnt beirwxrwxrwx777
umask····w··w·022
Ergibtrwxr-xr-x755
Häufige umask-Werte
umaskNeue DateiNeues Verzeichnis
022644 rw-r--r--755 rwxr-xr-x
002664 rw-rw-r--775 rwxrwxr-x
027640 rw-r-----750 rwxr-x---
077600 rw-------700 rwx------

Keine umask kann eine Datei ausführbar machen: Eine neue Datei beginnt ohne Ausführen-Bit, das erhalten bleiben könnte.

So ändern Sie einen Ordner und alles darin

chmod -R 755 folder gibt Verzeichnissen und Dateien denselben Modus, wodurch jede Datei ausführbar wird. Zwei find-Befehle geben jeder Art den Modus, den sie haben sollte.

find folder -type d -exec chmod 755 {} + und find folder -type f -exec chmod 644 {} + durchlaufen den Baum je einmal und setzen Verzeichnisse und Dateien getrennt. Der Rechner schreibt beide mit den Modi, die Sie gewählt haben, nicht mit einem festen Paar. Das + am Ende bündelt die Dateien in möglichst wenige chmod-Aufrufe, was bei einem großen Baum zählt.

Der andere sichere Weg ist das große X: chmod -R u=rwX,go=rX folder fügt Ausführen nur Verzeichnissen und Dateien hinzu, die schon ausgeführt werden können. Und nach jeder rekursiven Änderung liest stat -c '%a %n' folder/* alles eine Ebene tiefer zurück.

Ein Ordner, vier Wege
Der OrdnerJetzt1234
site/755755644755755
index.html644755644644644
app.php644755644644644
deploy.sh755755644644755
img/755755644755755
logo.png644755644644644
  1. 1$chmod -R 755 siteJede Datei lässt sich ausführen
  2. 2$chmod -R 644 siteKein Ordner lässt sich betreten
  3. 3$find site -type d -exec chmod 755 {} +$find site -type f -exec chmod 644 {} +Jede Art erhält ihren eigenen ModusEin Skript verliert auch sein x
  4. 4$chmod -R u=rwX,go=rX siteJede Art erhält ihren eigenen ModusEine Datei, die schon ausführbar war, behält ihr x

Gibt es chmod unter Windows?

Nicht dasselbe. Windows verwendet Zugriffssteuerungslisten, und icacls ist der nächstliegende Befehl: icacls file /grant Users:(RX).

NTFS-Rechte sind eine Liste von Einträgen, die jeweils einen Benutzer oder eine Gruppe und deren Rechte nennen, also gibt es keine einzelne dreistellige Zahl zu berechnen. Die nächstliegende Übersetzung gilt je Klasse: Lesen wird R, Lesen und Ausführen RX, Schreiben W, und Ausführen allein wird zum besonderen Recht X; braucht eine Ziffer zwei Rechte, werden beide aufgeführt – 7 ist (RX,W). Keine Ziffer ergibt Ändern (Modify, M), das auch Löschen erlaubt, oder Vollzugriff (Full control, F), der auch das Ändern der Zugriffsrechte und die Übernahme des Besitzes erlaubt. Der Rechner zeigt diese Zuordnung neben Ihrem Modus, und sie ist die beste Näherung, keine Entsprechung.

Im Windows-Subsystem für Linux funktioniert chmod auf dem Linux-Dateisystem richtig. Auf einem unter /mnt/c eingehängten Windows-Laufwerk funktioniert es nur, wenn das Laufwerk mit der Option metadata eingehängt ist. Ohne sie wird der Modus aus Ihren Windows-Rechten errechnet, für Eigentümer, Gruppe und alle anderen gleich, und chmod kann kaum mehr tun, als das Schreibgeschützt-Attribut zu setzen – ein Schlüssel auf der Windows-Seite kann also als zu offen gelten, und chmod 600 hilft dort nicht.

Jede chmod-Ziffer und ihr nächstliegendes icacls-Rechticacls
ZifferBuchstabenNächstliegendes Recht
7rwx(RX,W)Lesen, schreiben und ausführen
6rw-(R,W)Lesen und schreiben
5r-x(RX)Lesen und ausführen
4r--(R)Lesen
3-wx(W,X)Schreiben und ausführen
2-w-(W)Schreiben
1--x(X)Ausführen
0---—Kein Zugriff

Die beste Näherung, keine Entsprechung: Windows führt eine Liste von Einträgen, die jeweils nennen, wer welche Rechte erhält. Keine Ziffer ergibt Ändern (Modify, M), das auch Löschen erlaubt, oder Vollzugriff (Full control, F), der auch das Ändern der Zugriffsrechte (WDAC) und die Übernahme des Besitzes (WO) erlaubt. Auf beiden Systemen darf der Eigentümer die Rechte einer Datei immer ändern.

In WSL
  • /homeAuf dem Linux-Dateisystem: chmod funktioniert wie auf jedem Linux.
  • /mnt/cUnter /mnt/c ohne die Option metadata: Die Modi stammen aus den Windows-Rechten, und chmod ändert fast nichts.
  • /mnt/c · metadataMit metadata: chmod funktioniert, aber nie über das hinaus, was Windows Ihnen erlaubt.

So prüfen Sie die Rechte einer Datei

ls -l zeigt sie als Buchstaben und stat als Zahl. Fügen Sie eines von beiden in den Rechner ein, und er liest den Modus zurück.

ls -l file gibt -rw-r--r-- 1 you staff 4096 25 Oct 09:26 file aus, und der Rechner nimmt die ganze Zeile – Sie müssen den Modus nicht selbst herauspicken. stat -c '%a %n' file gibt unter Linux 644 file aus; unter macOS lautet dasselbe stat -f '%Lp %N' file. Für ein ganzes Verzeichnis auf einmal listet GNU find . -maxdepth 1 -printf '%m %p\n' jeden Modus als Zahl (das find von macOS kennt kein -printf).

Ein + am Ende der Rechte-Zeichenfolge bedeutet, dass es mehr gibt als die neun Bits: Unter Linux ist es eine POSIX-ACL, die getfacl zeigt, und diese zusätzlichen Einträge stehen gar nicht im Modus. Unter macOS bedeutet ein @ erweiterte Attribute und ein + erweiterte Sicherheitsinformationen. Bei GNU ls bedeutet ein Punkt (.) einen Sicherheitskontext, etwa den von SELinux. Der Rechner akzeptiert alle drei Markierungen und sagt Ihnen, dass der Modus nur ein Teil der Geschichte ist.

Eine ls -l-Zeile, Feld für Feldls -l notes.txt
-Typrw-r--r--Rechte+Markierung1LinksyouEigentümerstaffGruppe4096Größe25 Oct 09:26Geändertnotes.txtName
Der Modus als Zahl
  • Linux$stat -c '%a %n' notes.txt644 notes.txt
  • macOS$stat -f '%Lp %N' notes.txt644 notes.txt
Das Zeichen nach dem Modus
  • -rw-r--r--+Linux: eine POSIX-ACL (getfacl listet sie). macOS: erweiterte Sicherheitsinformationen wie eine ACL.
  • -rw-r--r--@macOS: erweiterte Attribute.
  • -rw-r--r--.GNU ls: ein Sicherheitskontext, etwa der von SELinux, und sonst nichts.
  • -rw-r--r-- Nichts weiter: Die neun Bits sind die ganze Geschichte.

Chmod-Rechner: Fragen und Antworten

Was bedeutet chmod 755?

Es gibt dem Eigentümer Lesen, Schreiben und Ausführen und allen anderen Lesen und Ausführen. Ausgeschrieben ist das rwxr-xr-x. Die Ziffern sind Summen: 7 ist 4 + 2 + 1 und 5 ist 4 + 1. Nehmen Sie es für Verzeichnisse, die das Ausführen-Bit brauchen, bevor sie jemand betreten kann, und für Skripte und Programme. Nie für eine Datei, die privat bleiben soll.

Was ist der Unterschied zwischen chmod 644 und 755?

Ein Bit je Klasse: das Ausführen-Bit. 644 ist rw-r--r--, richtig für Dokumente, Bilder, Konfigurations- und Quelldateien. 755 ist rwxr-xr-x, richtig für Verzeichnisse und für alles, was ausgeführt werden muss. Gibt man Dateien 755, wird jede davon ausführbar, weshalb ein rekursives chmod -R 755 über eine Website ein Fehler ist; setzen Sie Verzeichnisse und Dateien getrennt.

Was macht chmod 777, und ist es sicher?

Es erlaubt jedem Konto auf dem Rechner, die Datei zu lesen, zu ändern und auszuführen. Fast nie ist es nötig, und auf einem gemeinsam genutzten oder aus dem Internet erreichbaren Server ist es ein echtes Risiko: Alles, was ein Skript schreiben kann, das der Server ausführt, kann den Server übernehmen. Die Dokumentation von WordPress selbst verlangt 755 oder 750 und 644 oder 640 und sagt, dass kein Verzeichnis je 777 haben sollte. Kann eine Anwendung irgendwo nicht schreiben, ändern Sie den Eigentümer oder die Gruppe, nicht den Modus.

Was macht chmod +x?

Es fügt das Ausführen-Bit hinzu, damit eine Datei ausgeführt werden kann. Beachten Sie, dass +x ohne Klasse nicht ganz a+x ist: Eine Klausel ohne Klasse lässt die Bits Ihrer umask unberührt, sodass bei der üblichen umask 022 Eigentümer, Gruppe und andere alle das Ausführen-Recht erhalten, eine strengere umask wie 077 es aber nur dem Eigentümer gibt. Schreiben Sie chmod a+x oder chmod u+x, wenn Sie sicher sein wollen.

Was bedeutet chmod 600, und warum verlangt SSH es?

600 ist rw-------: Nur der Eigentümer kann die Datei lesen oder ändern. OpenSSH lehnt einen privaten Schlüssel ab, den ein anderes Konto lesen kann, mit der Meldung Permissions 0644 for '<path>' are too open. Die Prüfung ist streng: Gehört Ihnen die Datei und ist überhaupt ein Gruppen- oder Others-Bit gesetzt, wird der Schlüssel abgelehnt, auch 640 scheitert also. Nehmen Sie chmod 600 für den Schlüssel und chmod 700 für ~/.ssh.

Was bedeutet die vierte Ziffer bei chmod?

Sie trägt die drei Spezial-Bits: Setuid 4, Setgid 2 und das Sticky-Bit 1. chmod 2775 folder setzt Setgid, damit neue Dateien darin die Gruppe des Ordners erhalten. chmod 1777 folder setzt das Sticky-Bit, damit man sich nicht gegenseitig Dateien löscht, wie es /tmp nutzt. Die Ziffer entfällt, wenn keines gesetzt ist.

Warum hat chmod 755 das Setgid-Bit meines Ordners nicht entfernt?

Weil GNU chmod Setuid und Setgid bei einem Verzeichnis behält, solange der numerische Modus weniger als fünf Ziffern hat – auch bei 0755. Das ist Absicht und konform: POSIX verlangt das Löschen dieser Bits nur bei einer regulären Datei. Nehmen Sie die symbolische Form chmod g-s folder oder schreiben Sie die führenden Nullen als chmod 00755 folder. Dieser Rechner schreibt die fünfstellige Form automatisch, wenn Ihre Änderung sie braucht.

Was ist der Unterschied zwischen chmod und chown?

chmod legt fest, was der Eigentümer, die Gruppe und alle anderen tun dürfen. chown legt fest, wer Eigentümer und Gruppe überhaupt sind. Sie beantworten zwei Hälften derselben Frage, und ein „Permission denied“ auf einem Webserver ist oft ein Problem des Eigentums, nicht des Modus: Die Dateien gehören dem falschen Benutzer, und kein Modus unterhalb von 777 überdeckt das.

Kann ich eine ls -l-Zeile in diesen Rechner einfügen?

Ja – die ganze Zeile, nicht nur den Modus. -rw-r--r-- 1 you staff 4096 25 Oct 09:26 notes.txt wird als Modus 644 bei einer Datei gelesen und drwxrwsr-x als 2775 bei einem Verzeichnis. Die ACL-Markierung +, der Punkt für den Sicherheitskontext und das @ von macOS werden verstanden. Sie können auch einen Operatorausdruck wie u+x oder go-w einfügen und sehen, welche Bits er ändert.

Was bedeutet das + oder @ nach den Rechten?

Sie sagen, dass die neun Bits nicht die ganze Geschichte sind. Unter Linux bedeutet ein +, dass die Datei eine POSIX-ACL mit Einträgen jenseits von Eigentümer, Gruppe und anderen hat – getfacl zeigt sie, und sie sind nicht Teil des Modus. Bei GNU ls bedeutet ein Punkt einen Sicherheitskontext, etwa den von SELinux. Unter macOS bedeutet @ erweiterte Attribute und + erweiterte Sicherheitsinformationen. Verhalten sich die Rechte trotz vernünftigem Modus seltsam, schauen Sie dort nach.

Gibt es ein chmod-Äquivalent unter Windows?

Windows verwendet Zugriffssteuerungslisten statt eines Modus, also gibt es keine genaue Entsprechung. icacls file /grant Users:(RX) ist der nächstliegende Befehl, und der Rechner zeigt die nächsten Rechte für Ihren Modus. In WSL funktioniert chmod auf dem Linux-Dateisystem normal, auf einem Windows-Laufwerk unter /mnt/c hat es aber kaum Wirkung, wenn das Laufwerk nicht mit der Option metadata eingehängt wurde.

Was ergibt umask 022?

644 für eine neue Datei und 755 für ein neues Verzeichnis. Eine neue Datei beginnt bei 666 und ein Verzeichnis bei 777, und jedes in der umask gesetzte Bit wird abgeschaltet. Weil eine Datei nie mit einem Ausführen-Bit beginnt, kann keine umask sie ausführbar machen – das ist immer ein späteres chmod +x. Probieren Sie im Reiter umask oben einen beliebigen Wert aus und öffnen Sie jedes Ergebnis im Rechner.

Fehlt Ihnen etwas?Funktion oder neues Tool vorschlagen