chmod erlaubt wie gesagt das Aendern der Zugriffsrechte einer (oder mehrerer) Dateien. Die Rechte an einer Datei duerfen nur der Besitzer der Datei oder root (UID == 0) aendern. chmod erkennt zwei Arten der Rechteaenderung:

  • die symbolische und

  • die oktale Schreibweise

Bei der symolischen Schreibweise wird nach der folgenden Syntax gearbeitet * chmod [ugoa][+-=][rwxs]*.

u

Benutzer (User)

g

Gruppe (Group)

o

Rest (Other)

a

Alles zusammen (All)

+

Rechte Addieren

-

Rechte Entziehen

=

Rechte absolut setzen

r

Lesen (Read)

w

Schreiben (Write)

x

Ausfuehren (Execute)

s

Set-User-Bit bzw. Set-Group-Bit

Mehrere symbolische Aenderungen koennen durch Kommata getrennt im ersten Parameter angegeben werden.

Bei der oktalen Schreibweise ist jedem recht ein oktaler Wert zugewiesen. Die einzelnen Oktalwerte koennen zu einer Rechtemaske addiert werden. Die Rechtemaske ist immer absolut und nimmt keine Ruecksicht auf den vorhergehenden Wert der Zugriffsrechte. Es sind folgende Oktalwerte moeglich:

4000

Set-User-Bit

2000

Set-Group-Bit

1000

Sticky-Bit (normale User koennen das nur bei Verzeichnissen setzen.

0400

Leserecht fuer den Besitzer

0200

Schreibrecht fuer den Besitzer

0100

Ausfuehrrecht fuer den Besitzer

0040

Leserecht fuer die Gruppe

0020

Schreibrecht fuer die Gruppe

0010

Ausfuehrungsrecht fuer die Gruppe

0004

Leserecht fuer alle!

0002

Schreibrecht fuer alle!

0001

Ausfuehrungsrecht fuer alle

Mal ein paar Beispiele: Die Ausfuehrungsrechte fuer den Besitzer auf die Datei foobar vergeben:

$ chmod u+x foobar
$ chmod 0100 foobar

Das Verzeichnis p0rn soll die Zugriffsrechte rwxr-xr-x erhalten:

$ chmod u=rwx,go=rx p0rn
$ chmod 755 p0rn

Die Leserechte fuer die Gruppe wegnehmen und die Ausfuehrungsrechte fuer alle anderen vergeben:

$ chmod g-r,o+x brain
$ chmod 0751 brain