Dateirechte unter Linux
 

Worüber man häufig unter Linux stolpert, sind die Dateirechte. Jede Datei hat einen Besitzer und eine Gruppenzugehörigkeit. Mittels einer expliziten Rechtevergabe legt man fest, wer was mit der Datei machen darf. Dieses Konzept ist eines der Hauptgründe warum Linux so sicher ist. Aufgeteilt sind die Rechte in drei Kategorien. Die erste Kategorie ist der Eigentümer der Datei selbst, so kann man für sich selbst einen Schreibschutz aktivieren, wenn man das Recht auf schreiben entfernt. Die zweite Kategorie ist die Gruppenzugehörigkeit und bestimmt, was Mitglieder dieser Gruppe mit der Datei machen können. Und die dritte Kategorie sind alle Anderen (sozusagen der Rest der Welt).

Mit Hilfe des Befehls ls -al kann man sich nicht nur die Dateirechte anzeigen lassen, sondern auch den Besitzer und die Gruppe, z.B.
# ls -al
drwxr-xr-x 1 root root 4096 2008-03-08 02:26 .
drwxr-xr-x 1 root root 4096 2007-03-09 22:04 ..
drwxrwxrwx 1 udo udo 16384 1970-01-01 01:00 Versuch
-rwxr-xr-- 1 udo udo 234 2008-03-08 02:26 Datei

Die grobe Gliederung am Beispiel der letzten Datei:
-rwxr-xr-- Die Rechtemaske.
1 Referenzzähler
udo Eigentümer der Datei.
udo Gruppenzugehörigkeit der Datei.
234 Größe in Bytes.
2008-03-08 02:26 Zeitstempel der Datei.

Etwas ausführlicher:
Die allererste Stelle kennzeichnet die Art des Eintrags.
Ein d steht für ein Verzeichnis (Directory), normale Dateien haben hier einen Strich.
Dann folgt die 3er Kombi für die Rechte des Eigentümers der Datei: rwx.
r = (read) lesen
w = (write) schreiben
x = ausführen
Steht nur ein "-" an der betreffenden Stelle, dann hat die betreffende Kategorie das betreffende Recht nicht.
Als nächstes kommt die Dreier-Kombi für die Gruppe und als letztes für den Rest der Welt. Nach dem Referenzzähler (die Zahl in der zweiten Spalte) folgt der Eigentümer der Datei und die Gruppenzugehörigkeit.

chmod

Ändern kann man die Rechte mit chmod, z.B.:
# ls -al
-rwxr-xr-- 1 udo udo 234 2008-03-08 02:26 Datei
# chmod 777 Datei
# ls -al
-rwxrwxrwx 1 udo udo 234 2008-03-08 02:26 Datei

Dabei gibt man die Zugriffsrechte in oktaler Form (Zahlen von 0 bis 7) an und kann folgendermaßen zusammen zählen: 4+2+1 für jeweils rwx. Möchte man z.B. volle Rechte vergeben, ist rwx (4+2+1) gleich 7. Für lediglich lesen und schreiben, also rw- rechnet man 4+2+0, ergibt 6.
Dazu eine Übersicht:
7 rwx
6 rw-
5 r-x
4 r--
3 -wx
2 -w-
1 --x
0 ---

Optionen für chmod:
-R Wenn ein Verzeichnis angegeben wurde, werden auch die
Rechte von Dateien und Verzeichnissen innerhalb dieses
Verzeichnisses geändert (rekursiv).

chown

Den Eigentümers oder der Gruppezugehörigkeit ändert man mit chown:
# ls -al
-rwxrwxrwx 1 udo udo 234 2008-03-08 02:26 Datei
# chown root:root Datei
-rwxrwxrwx 1 root root 234 2008-03-08 02:26 Datei

Wird nur ein Benutzername angegeben, bleibt die Gruppe so, wie sie war. Wird ein Benutzername mit Doppelpunkt angegeben, dann wird die Datei der primären Gruppe des Benutzers zugeordnet. Wird nur ein Gruppenname angegeben (mit Doppelpunkt am Anfang), dann bleibt der Eigentümer so, wie er war.
Zum Beispiel:
# ls -al
-rwxrwxrwx 1 root root 234 2008-03-08 02:26 Datei
# chown udo: Datei
# ls -al
-rwxrwxrwx 1 udo udo 234 2008-03-08 02:26 Datei
Die Datei wurde dem Benutzer udo zugeordnet und wegen der Doppelpunkte auch der primären Gruppe (hier die Gruppe udo) des Benutzers.