Linux chmod-Befehl
Der Linux-Befehl chmod (englische Vollschreibweise: change mode) ist ein Befehl, der die Benutzerberechtigungen für Dateien steuert.
chmod (change mode) ist ein Befehl in Linux-Systemen, mit dem die Berechtigungen von Dateien oder Verzeichnissen geändert werden. Er steuert die Zugriffsberechtigungen des Dateieigentümers, der besitzenden Gruppe und anderer Benutzer auf die Datei.
Nur der Dateieigentümer und der Superuser können die Berechtigungen einer Datei oder eines Verzeichnisses ändern.
Linux/Unix-Dateizugriffsberechtigungen sind in drei Ebenen unterteilt: Dateieigentümer (Owner), Benutzergruppe (Group) und andere Benutzer (Other Users).

Sie können den absoluten Modus (oktalen numerischen Modus) und den symbolischen Modus verwenden, um Dateiberechtigungen festzulegen.

Berechtigung zur Verwendung: Alle Benutzer
Syntax
chmod [选项] 权限模式 文件... chmod [选项] --reference=参考文件 文件...
Häufige Optionen
- -c : Zeigt die Änderungsaktion nur an, wenn die Dateiberechtigung tatsächlich geändert wurde
- -f : Keine Fehlermeldungen anzeigen, wenn die Dateiberechtigungen nicht geändert werden können
- -v : Detaillierte Informationen zu Berechtigungsänderungen anzeigen
- -R : Dieselben Berechtigungsänderungen auf alle Dateien und Unterverzeichnisse im aktuellen Verzeichnis anwenden (d. h. sie rekursiv nacheinander ändern)
- --help : Hilfeinformationen anzeigen
- --version : Version anzeigen
mode : Berechtigungseinstellungszeichenfolge, das Format ist wie folgt:
Berechtigungsmodi
1. Symbolischer Modus (ugoa+/- Berechtigung)
[ugoa...][[+-=][rwxX]...][,...]
Wobei:
- u steht für den Besitzer der Datei, g steht für diejenigen, die derselben Gruppe wie der Dateibesitzer angehören, o steht für andere und a steht für alle drei.
- + bedeutet Berechtigung hinzufügen, - bedeutet Berechtigung entfernen, = bedeutet Berechtigung eindeutig festlegen.
- r bedeutet lesbar, w bedeutet schreibbar, x bedeutet ausführbar, X bedeutet nur, wenn die Datei ein Unterverzeichnis ist oder die Datei bereits als ausführbar gesetzt wurde.
Im symbolischen Modus können mehrere Elemente festgelegt werden: who (Benutzertyp), Operator und Berechtigung. Die Einstellungen der einzelnen Elemente können durch Kommas getrennt werden.
Der Befehl chmod ändert die Zugriffsberechtigungen für die durch who angegebenen Benutzertypen. Der Benutzertyp wird durch einen oder mehrere Buchstaben an der who-Position angegeben, wie in der who-Symbolmodus-Tabelle dargestellt:
| who | Benutzertyp | Beschreibung |
|---|---|---|
| u | user | Dateieigentümer |
| g | group | Gruppe des Dateieigentümers |
| o | Andere | Alle anderen Benutzer |
| a | all | Alle Benutzer, äquivalent zuugo |
Symbolische Modustabelle für Operator:
| Operator | Beschreibung |
|---|---|
| + | Berechtigung für den angegebenen Benutzertyp hinzufügen |
| - | Berechtigung vom angegebenen Benutzertyp entfernen |
| = | Berechtigungen für den angegebenen Benutzertyp festlegen, d. h. alle Berechtigungen des Benutzertyps zurücksetzen |
Berechtigungstypen:
| Mode | Name | Beschreibung |
|---|---|---|
| r | read | Als lesbare Berechtigung festlegen |
| w | write | Als schreibbare Berechtigung festlegen |
| x | Ausführungsberechtigung | Als ausführbare Berechtigung festlegen |
| X | Spezielle Ausführungsberechtigung | Die Dateiberechtigung nur dann als ausführbar setzen, wenn die Datei eine Verzeichnisdatei ist oder wenn andere Benutzertypen Ausführungsberechtigung haben |
| s | setuid/gid | Wenn die Datei ausgeführt wird, die setuid- oder setgid-Berechtigung der Datei gemäß dem durch den who-Parameter angegebenen Benutzertyp setzen |
| t | Sticky-Bit | Das Sticky-Bit setzen. Nur der Superuser kann dieses Bit setzen, und nur der Dateieigentümer u kann dieses Bit verwenden. |
2. Oktalsyntax
Der chmod-Befehl kann Oktalzahlen verwenden, um Berechtigungen anzugeben.
| Number | Berechtigung |
|---|---|
| 4 | Lesen (r) |
| 2 | Schreiben (w) |
| 1 | Ausführen (x) |
Kombination:
- Berechtigung des Eigentümers (erste Ziffer)
- Berechtigung der Gruppe (zweite Ziffer)
- Berechtigung anderer Benutzer (dritte Ziffer)
Gängige Kombinationen:
- 755:
rwxr-xr-x - 644:
rw-r--r-- - 700:
rwx------
Die Berechtigungsbits einer Datei oder eines Verzeichnisses werden durch 9 Berechtigungsbits gesteuert, wobei jede Gruppe von drei Bits die Lese-, Schreib- und Ausführungsberechtigungen des Dateieigentümers (User), die Lese-, Schreib- und Ausführungsberechtigungen der Gruppe (Group) und die Lese-, Schreib- und Ausführungsberechtigungen anderer Benutzer (Other) darstellt.
| # | Berechtigung | rwx | Binary |
|---|---|---|---|
| 7 | Lesen + Schreiben + Ausführen | rwx | 111 |
| 6 | Lesen + Schreiben | rw- | 110 |
| 5 | Lesen + Ausführen | r-x | 101 |
| 4 | Nur Lesen | r-- | 100 |
| 3 | Schreiben + Ausführen | -wx | 011 |
| 2 | Nur Schreiben | -w- | 010 |
| 1 | Nur Ausführen | --x | 001 |
| 0 | Keine | --- | 000 |
Zum Beispiel würde 765 wie folgt interpretiert:
- Die Berechtigung des Eigentümers wird in Zahlen ausgedrückt: die Summe der Ziffern der drei Berechtigungsbits des Eigentümers. Zum Beispiel bedeutet rwx 4+2+1, was 7 ergeben sollte.
- Die Berechtigung der Gruppe wird in Zahlen ausgedrückt: die Summe der Ziffern der Berechtigungsbits der Gruppe. Zum Beispiel bedeutet rw- 4+2+0, was 6 ergeben sollte.
- Die Berechtigung anderer Benutzer wird in Zahlen ausgedrückt: die Summe der Ziffern der Berechtigungsbits anderer Benutzer. Zum Beispiel bedeutet r-x 4+0+1, was 5 ergeben sollte.
Beispiele
file1.txt für alle lesbar machen:
chmod ugo+r file1.txt
file1.txt für alle lesbar machen:
chmod a+r file1.txt
file1.txt und file2.txt so einstellen, dass der Dateieigentümer und die Mitglieder derselben Gruppe schreiben können, andere jedoch nicht schreiben können:
chmod ug+w,o-w file1.txt file2.txt
Ausführungsberechtigung für den Besitzer der Datei ex1.py hinzufügen:
chmod u+x ex1.py
Alle Dateien und Unterverzeichnisse im aktuellen Verzeichnis für alle lesbar machen:
chmod -R a+r *
Darüber hinaus kann chmod auch Zahlen verwenden, um Berechtigungen darzustellen, z. B.:
chmod 777 file
Die Syntax lautet:
chmod abc file
Dabei sind a, b, c jeweils eine Zahl, die die Berechtigungen von Benutzer, Gruppe und Andere darstellen.
r=4,w=2,x=1
- Für rwx-Attribute gilt: 4+2+1=7;
- Für die Attribute rw- gilt: 4+2=6;
- Für die Attribute r-x gilt: 4+1=5.
chmod a=rwx file
und
chmod 777 file
Die Wirkung ist dieselbe
chmod ug=rwx,o=x file
und
chmod 771 file
Die Wirkung ist dieselbe
Bei Verwendung vonchmod 4755 filenamekann dies dem Programm Root-Rechte verleihen.
Weitere Hinweise
| Befehl | Beschreibung |
|---|---|
| chmod a+r file | Leseberechtigung für alle Benutzer für file hinzufügen |
| chmod a-x file | Ausführungsberechtigung für alle Benutzer für file entfernen |
| chmod a+rw file | Lese- und Schreibberechtigungen für alle Benutzer für file hinzufügen |
| chmod +rwx file | Lese-, Schreib- und Ausführungsberechtigungen für alle Benutzer für file hinzufügen |
| chmod u=rw,go= file | Lese- und Schreibberechtigung für den Eigentümer von file festlegen und alle Berechtigungen für die Gruppe und andere Benutzer für file entfernen (ein Leerzeichen steht für keine Berechtigung) |
| chmod -R u+r,go-r docs | Leseberechtigung für den Benutzer für alle Dateien im Verzeichnis docs und seiner Unterverzeichnis-Hierarchie hinzufügen und die Leseberechtigung für die Gruppe und andere Benutzer entfernen |
| chmod 664 file | Setze die Lese- und Schreibberechtigung für den Eigentümer und die Gruppe der Datei und setze die Leseberechtigung für andere Benutzer |
| chmod 0755 file | Äquivalent zuu=rwx (4+2+1),go=rx (4+1 & 4+1)。0Kein spezieller Modus. |
| chmod 4755 file | 4Das set-user-ID-Bit ist gesetzt, und der Rest ist äquivalent zu u=rwx (4+2+1), go=rx (4+1 & 4+1). |
| find path/ -type d -exec chmod a-x {} \; | Entferne die Ausführungsberechtigung für alle Benutzer für path/ und alle seine Verzeichnisse (Dateien ausgenommen); verwende '-type f', um Dateien abzugleichen. |
| find path/ -type d -exec chmod a+x {} \; | Erlaube allen Benutzern, das Verzeichnis path/ zu durchsuchen oder zu durchqueren |
Linux-Befehlsenzyklopädie