Linux/Unix-Dateirechte


Jedes Verzeichnis und jede Datei in einem Unix-System hat bestimmte Rechte und Eigenschaften.
Diese kann man sich in der Shell mit dem Befehl ls -l anzeigen lassen. Die Ausgabe kann dann z.B. so aussehen:

user1@linuxpc:/home/user1/dir1 > ls -l
total 80
-rw-r--r--    1 user1    users     21467  Jan 22 13:49  dat1.zip
drwxr-xr-x    5 user1    users     3437  Feb 13 16:23  dir1/
-rw-r--r--    1 user1    users     53437  Feb 19 19:32  pack.tar
lrwxrwxrwx    1 user1    users     18  Mar 24 12:42  link1 -> /test


Die Rechte stehen ganz links im Listing. Danach folgt die Anzahl der Hardlinks,s dann der Besitzer der Datei, dann die Gruppe, die Größe, das Datum an dem die Datei erstellt wurde und schließlich der Dateiname.

Die Dateirechte sind wie folgt gegliedert:
Der erste Buchstabe gibt Auskunft über die Art der Datei:

-normale Datei
lSoft-Link
dVerzeichniss
cZeichenorientiertes Gerät
bBlockorientiertes Gerät
sSocket
pPipe

Die nächsten 9 Zeichen geben die Zugriffsrechte für die Datei an. Dazu werden 3 Blöcke mit jeweils 3 Zeichen verwendet, wobei der erste Block die Zugriffsrechte des Benutzers angibt, der zweite Block die der Gruppe und der dritte Block bezieht sich auf alle weiteren (jeder).

ZeichenBedeutungOktalBeschreibung
rLeserechte0444Der Benutzder kann sich die Datei und das Verzeichniss anzeigen lassen
wSchreibrechte0222Der Benutzer kann die Datei verändern und löschen bzw. Dateien in das Verzeichnis kopieren oder dieses löschen
Dateien
xAusführungsrechte0111Die Datei ist ein Programm, das direkt ausgeführt werden kann
sStart als Benutzer4000Das Programm wird so gestartet, als ob es der Besitzter der Datei starten wünrde.
sStart als Gruppe2000Das Programm wird so gestartet, als ob ein Gruppenmitglied die Datei aufrufen würde.
Verzeichnisse
xWechselrecht0111Der Anwender darf in das Verzeichnis wechseln
sGruppenbesitz2000Alle Dateien, die in das Verzeichniss geschrieben werden, gehören automatisch der Gruppe, der auch das Verzeichniss gehört
tLöschschutz1000Nur der Besitzer der Dateien kann diese löschen, auch wenn andere Benutzer schreibrechte auf die Dateien haben
Ändern der Rechte:

Um die Rechte einer Datei bzw. eines Verzeichnisses zu ändern, kann man entweder im Datei-Browser (z.B. Konqueror) sich die Eigenschaften der Datei anzeigen lassen und entsprechend bei den Rechten Häkchen setzen, oder nicht. Diese Vorgehensweise ist wahrscheinlich die komfortabelste.

Darüber hinaus gibt es das Shell-Kommando chmod (von CHangeMODus). Dabei kann man entweder die symbolische Schreibweise verwenden oder direkt den Oktalen Wert angeben.

chmod MODUS[,MODUS] DATEIEN

Da sich die Zugriffsrechte in drei Sparten teilen, gibt es in der symbolischen Schreibweise noch die folgenden Zeichen mit Zusatzbedeutungen:

Modifikatoren
uEinstellungen betreffen nur den Benutzer
gEinstellungen betreffen nur die Gruppe
oEinstellungen betreffen nur den Rest
aEinstellungen betreffen Alle
+Rechte setzen
-Rechte entfernen


Die Rechte können entweder direkt für alle angeben werden, oder nur die Änderungen gegenüber den aktuell gesetzten Rechten werden.

Um z.B. dem Benutzer alle Rechte, der Gruppe Lese- und Ausführungsrechte und dem Rest nur Leserechte auf die Datei meinProgramm zu geben, kann man folgende äquivalenten Befehle ausführen:

$ chmod 754 [Datei]
$ chmod u=rwx,g=rx,o=r [Datei]

Anstelle von "Datei" können hier auch Wildcards, also z.B. für alle Dateien im Verzeichnis das Zeichen "*", verwendet werden. Ändern der Gruppenzugehörigkeit:

Oft ist es so, dass ein Benutzer mehreren Gruppen angehört. Um sich diese Gruppen anzeigen zu lassen, gibt des den Befehl groups. Alternativ kann man unter vielen Distributionen auch id verwenden. Dieser Befehl zeigt dann auch die Primärgruppe des Users an. Standartmäßig gehören alle Dateien, die man anlegt, zu dieser Primärgruppe. Man kann jedoch mit newgrp die Primärgruppe wechseln, so das alle neuen Dateien auch direkt zu der neuen Gruppe gehören. Um nachträglich die Gruppenzugehörigkeit einer Datei zu verändern, gibt es den chgrp Befehl. Dabei gibt man den Namen der neuen Gruppe an und die Dateien, die zu dieser Gruppe dazugehören sollen:

$ chgrp [neue Gruppe] [Datei]


Um den Besitzer einer Datei zu wechseln, gibt es den Befehl chown (Change Owner). Dieser wird folgendermaßen angewendet:

$ chown [neuer Benutzer] [Datei]

Um die Rechte für andere Benutzer standartmäßig einzuschränken, kann man mit umask eine Maske angeben, die mit den Rechten verknüpft werden soll. Ein in dieser Maske gesetztes Bit führt dazu, das beim Anlegen neuer Dateien die entsprechenden Bits dort nicht gesetzt werden. Durch ein umask 077 erhält man z.B. die alleinigen Rechte an neuen Dateien, während ein umask u=rw,g=rw,o= dem Benutzer und seiner Gruppe Lese- und Schreibrechte ermöglicht.