SUCKUP.de

chmod – HowTo

This blog post has been published on 2010-01-31 and may be out of date.

chmod (von englisch: change mode) ist ein Kommandozeilenprogramm unter Unix, mit dem sich die klassischen Unix-Dateiattribute (Zugriffsrechte) verändern lassen. Das

chmod

-Kommando gibt es bereits seit der ersten Version des AT&T-Unix (Ende der 1970er Jahre). – Wikipedia

chmod (-R) (u|g|o|a) (+|-|=) (r|w|x|s|t) Datei/Verzeichnis

-R -> auch Unterverzeichnisse ändern (rekursiv)
-u -> user (Eigentümer)
-g -> group (Gruppe)
-o -> others (Andere)
-a -> all (Alle anderen)

+ -> Hinzufügen
– -> entfernen
= -> gleich

r -> read (Lese-Rechte)
w -> write (Schreib-Rechte)
x -> execute (Ausführ-Rechte)
s -> beim ausführen, startet das Programm mit dem Rechten des Eigentümer (u+s) oder der Gruppe (g+s)
t -> Lese-, Schreib-, Ausführrechte für den Inhalt eines Verzeichnisses, jedoch darf man nur seine eigenen Dateien löschen, mit Ausnahme des Eigentümers des Verzeichnisses

Zudem kann man die Zugriffsrechte auch per Ziffer (Oktalzahl) angeben: im folgendem Beispiel beschränke ich mich mal auf u|g|u und r|w|x

Die Oktalzhl ist eine Zusammenfassung von Binärzahlen, welche wiederum verschiedene Zugriffsrecht und Wertigkeiten haben.

Wertigkeiten: x = 1 ; w = 2 ; r = 4

Beispiel:

chmod -R 640 /home/User/Desktop/test

Symbolisch: r w | r |

Oktal: 6 | 4 | 0

Binär: 1 1 0 | 1 0 0 | 0 0 0

User: w (2) + r (4) = 6
Gruppe: r (4) = 4
Other: (0) = 0

0 <-> — <-> keine Berechtigung

1 <-> –x <-> ausführ-Rechte

2 <-> -w- <-> schreib-Rechte

3 <-> -wx <-> schreib-, ausführ-Rechte

4 <-> r– <-> lese-Rechte

5 <-> r-x <-> lese-, ausführ-Rechte

6 <-> rw- <-> lese-, schreib-Rechte

7 <-> rwx <-> lese-, schreib-, ausführ-Rechte

um nun z.B. alle Dateien einer Webseite, welche im aktuellen Verzeichnis liegen die ausführ-Rechte zu entziehen kann man sich einen find-Befehl zusammenbasteln:

find . -type f -exec chmod -x {} \;

bzw. folgendermaßen, um die schreib-rechte nur für den Besitzer der Dateien zu erlauben:

find . -type d -exec chmod 750 {} \;
find . -type f -exec chmod 640 {} \;