Das Original wurde vom Benutzer ScouT auf PRO-LINUX.DE veröffentlicht
Tipps: Shell-Kommandos – chmod 22. Nov. 1999
Das vorliegende Dokument enthält Änderungen und Erweiterungen

Das Kommando chmod zum ändern der Dateirechte

Syntax

Die Syntax des Befehls chmod lautet:

chmod WerWieWas [,WerWieWas,...] Dateiliste

oder:

chmod Oktalzahl Dateiliste

Durch WerWieWas bzw. Oktalzahl wird die Rechtetabelle definiert. Innerhalb von WerWieWas darf es kein Leerzeichen geben. Wer bezeichnet den Benutzerkreis, dem man Rechte gibt, Wie die Art, in der die Rechte gegeben werden, und Was die Rechte als solche. Im einzelnen können folgende Kürzel benutzt werden:

Bedeutung der Kürzel

Für Wer kann eines der folgenden Kürzel oder eine Kombination davon stehen:

Kürzel Bedeutung Beschreibung
u user Rechte für den Dateibesitzer
g group Rechte für die Gruppe
o others Rechte für alle anderen Benutzer
a all Rechte für alle Benutzer (entspricht ugo)

Für Was steht eines der folgenden Kürzel:

Kürzel Beschreibung
+ Die Rechte werden zu den vorhandenen zusätzlich vergeben
- Die im folgenden genannten Rechte werden entzogen
= Die im folgenden genannten Rechte ersetzen die bisherigen

Für Wie steht eines der Rechtekürzel, oder eine Kombination davon:

Kürzel Beschreibung
r Das Recht zu lesen (read)
w Das Recht zu schreiben (write)
x Das Recht die Datei auszuführen (execute) bzw. das Recht,
das Verzeichnis zu betreten
X (großes X!) Vergibt das x-Recht nur dann, wenn die Datei ein Verzeichnis ist
oder es schon der Besitzer, die Gruppe oder andere Benutzer haben
u Vergibt die Rechte so, wie sie beim Besitzer (user) zur Zeit sind
g Vergibt die Rechte so, wie sie bei der Gruppe (group) zur Zeit sind
o Vergibt die Rechte so, wie sie bei anderen Benutzern (others) zur Zeit sind

Beispiele für die Schreibweise mit Kürzel

Will sich der Dateibesitzer das x-Recht an der Datei testdatei geben, so geschieht das mit:

chmod u+x testdatei

Der Entzug des w-Rechts für alle Benutzer erfolgt mit:

chmod a-w testdatei

Will man sich selbst rwx, der Gruppe rx und anderen nur x gewähren, lautet der Befehl:

chmod u=rwx,g=rx,o=x testdatei

Die oktale Schreibweise

Der letzte Fall lässt sich eleganter mit der zweiten Syntaxvariante lösen. Oktalzahl ist eine dreiziffrige oktale Zahl, bei der die erste Ziffer die Rechte des Besitzers beschreibt, die zweite die der Gruppe und die dritte wieder die der anderen Benutzer.

Dabei haben die Ziffern folgende Bedeutung:

Ziffer Bedeutung
0 kein Recht
1 x-Recht
2 w-Recht
4 r-Recht

Rechtekombinationen werden durch Addition der Grundwerte beschrieben.

Die Rechtekombination rx entspricht der Ziffer 5, umgekehrt repräsentiert die Ziffer 7 alle Rechte, also rwx. Das letzte Befehlsbeispiel läßt sich in dieser Syntax so schreiben:

chmod 751 testdatei

Beachten Sie, dass nur die erste Syntax das Entziehen einzelner Rechte oder deren zusätzliche Vergabe gestattet. Durch:

chmod 751 testdatei

werden bisher vorhandene Rechte ersetzt. Im Einzelfall liegt es im Ermessen des Benutzers, welche Befehlsform er anwenden will.

Beispiele für die oktale Schreibweise

1) Der Benutzer Max ist Mitglied der Gruppe Buchhaltung. Er möchte eine Liste in einem Verzeichnis auf den zentralen Server der Firma ablegen. Er selbst möchte Lese- und Schreibrechte. Alle Mitglieder seiner Gruppe sollen die Liste lesen können. Alle weiteren Betriebsangehörigen sollen keine Rechte bekommen:

read write exec read write exec read write exec
user r w
group r
others
oktal 4 2 1 4 2 1 4 2 1
oktal = 6 = 4 = 0

Max gibt entsprechend den Befehl ein:

chmod 640 liste.datei

2) Der Systemadministrator Dave hat ein Skript geschrieben, das jeder in der Firma betrachten und ausführen darf. Änderungen bleiben ihm vorbehalten:

read write exec read write exec read write exec
user r w x
group r x
others r x
oktal 4 2 1 4 2 1 4 2 1
oktal = 7 = 5 = 5

Dave gibt folgenden Befehl ein:

chmod 755 skript4alle.sh

Zum Abschluß noch die Ausgabe wie man sie mit ls -l erhält:

-rw-r----- 1 max  buchhaltung  836 2011-02-07 11:30 liste.datei
-rwxr-xr-x 1 dave it-abteilung 101 2011-02-09 21:48 skript4alle.sh