Linux Datei- und Verzeichnisrechte

chown / chgrp

Funktion:

  • chown wechselt den Besitzer oder Besitzer+Gruppe einer Datei oder eines Verzeichnisses
  • chgrp wechselt die Gruppe einer Datei oder eines Verzeichnisses

Syntax:

  • chown user Datei(en)
  • chgrp gruppe Datei(en)
  • chown user:gruppe Datei(en)

Wichtige Parameter:

  • -R = Rekursiv, Unterverzeichnisse einbeziehen
  • -c = Changes, Zeige an, was geändert wurde

Anwendungsfälle:

  • Alle Dateien im Ordner /home/mike dem Benutzer mike, Gruppe users geben:
    chown -R -c mike:users /home/mike/
  • Alle Webseiten der Gruppe www-data zuweisen:
    chgrp -R -c www-data /var/www/
  • Der Datei /root/telefonliste.txt Besitzer root, Gruppe users zuweisen:
    chown root:users /root/telefonliste.txt

Hinweis: chown benötigt Root-Rechte.

chmod

Funktion:

  • chmod setzt die Rechte von Dateien oder Verzeichnissen

Syntax:

  • chmod rechte Datei(en)

Rechte:

Zuerst kommt die Angabe, für wen die angegebenen Rechte gesetzt werden sollen:

  • (u) User – Setzt das Recht für den Besitzer der Datei
  • (g) Group – Setzt das Recht für die Gruppe der Datei
  • (o) Others – Setzt das Recht für alle anderen
  • (a) All – Entspricht ugo

Es folgt die Art der Zuweisung:

  • (+) Add – Die Rechte werden zusätzlich gegeben
  • (-) Sub – Die Rechte werden entzogen
  • (=) Set – Die Rechte werden exakt so gesetzt

Danach die entsprechenden Rechte:

  • (r) Read – Lesezugriff (bei Verzeichnis: ls erlaubt)
  • (w) Write – Schreibzugriff (bei Verzeichnis: Anlegen und Löschen erlaubt)
  • (x) Execute – Ausführbar (bei Verzeichnis: cd erlaubt)
  • (X) Execute Special – Setzt x nur bei Verzeichnissen oder wenn bereits ein x-Recht gesetzt ist
  • (u) User – Setzt die Rechte, wie aktuell beim User gesetzt
  • (g) Group – Setzt die Rechte, wie aktuell bei der Gruppe gesetzt
  • (o) Others – Setzt die Rechte, wie aktuell bei Others gesetzt

Wichtig zu wissen ist, dass beim Löschen einer Datei nur Schreiberecht in Verzeichnis, nicht jedoch für die Datei erforderlich ist. Ein Benutzer mit Schreibzugriff auf ein Verzeichnis kann also Dateien löschen, auch wenn er an der Datei selbst kein Recht hat.

Anwendungsfälle:

  • Allen anderen (nicht User, nicht Gruppe) alle Rechte entziehen:
    chmod o-rwx [Dateien]
  • Besitzer und Gruppe volle Rechte (read/write) geben:
    chmod ug+rw [Dateien]
  • Beide oberen Beispiele in einem Befehl:
    chmod ug-rw,o-rwx [Dateien]

Oktale Schreibweise:

Statt die Rechte rwx einzeln zu benennen, lassen sie sich als Zahl ausdrücken. Dabei sind die Rechte nach dem Wertesystem r=4, w=2, x=1 zu addieren:

  • kein Recht entspricht 0
  • r entspricht 4
  • rx entspricht 5
  • rw entspricht 6
  • rwx entspricht 7
  • (andere Kombinationen ergeben wenig Sinn)

So läßt sich durch angeben von 3 Zahlen alle Rechte auf einmal setzen:

chmod 755 [Datei] entspricht also chmod u+rwx,go+rx [Datei]

Erweiterte Rechte:

Es gibt 3 zusätzliche Rechte, die gesetzt werden können:

  • Sticky: Recht o+t bzw. Oktal 1000 (z.B. 1777 statt 777)
  • Setgid: Recht g+s bzw. Oktal 2000
  • Setuid: Recht u+s bzw. Oktal 4000

Funktionsweise bei Dateien:

  • Sticky: Wird nicht benutzt.
  • Setuid: Die ausführbare Datei wird nicht mit als der User ausgeführt, der das Programm startet, sondern als der User, dem die Datei gehört. Damit kann man Diensten bestimmte Rechte geben, auch wenn ein normaler Benutzer sie startet.
  • Setgid: Wie Setuid, jedoch bezogen auf die Gruppe.

Funktionsweise bei Verzeichnissen:

  • Sticky: In dem Verzeichnis dürfen Dateien nur gelöscht werden, wenn man Besitzer der Datei oder des Verzeichnisses ist oder selbst Schreibrechte für die Datei hat. Es genügt nicht, nur Schreibrechte am Verzeichnis zu haben. Dies ist Sinnvoll, damit sich Benutzer Dateien nicht gegenseitig weglöschen können, z.B. in /tmp.
  • Setuid: Wird nicht benutzt.
  • Setgid: Neu angelegte Dateien in diesem Verzeichnis erhalten nicht die Gruppe des Benutzers, sondern die Gruppe, der aktuell auch das Verzeichnis gehört. Damit lassen sich z.B. Team-Ordner erstellen.

Wichtige Parameter:

  • -R = Rekursiv, Unterverzeichnisse einbeziehen
  • -c = Changes, Zeige an, was geändert wurde

Weblinks

Sehr schöne Beschreibung der Datei- und Verzeichnisrechte auf Wikipedia:
http://de.wikipedia.org/wiki/Unix-Dateirechte