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