Freigaben

Rechteverwaltung allgemein

Unix-Rechte setzt man allgemein mit chmod. Anzeigen lassen kann man sie sich mit

ls -la

. Dabei ist das Format der Einträge auf die folgende Reihenfolge festgelegt:

  1. Zuerst wird der Typ des Objekts durch ein Zeichen angegeben. Dabei steht d für Verzeichnisse (directories), l für symbolische Verweise (symbolic link), und - für Dateien.
  2. Es folgt ein Block von drei Zeichen für die Rechte der besitzenden Person (User).
  3. Der Block besteht aus folgenden Zeichen:
    1. Hat die nutzende Person das Leserecht (r) oder nicht (-)?
    2. Hat die nutzende Person das Schreibrecht (w) oder nicht (-)?
    3. Kann die nutzende Person die Datei ausführen (x) oder nicht (-)?

Wichtig: Falls ein Verzeichnis nicht über das x verfügt, kann es auch nicht gelesen werden, da hierzu ja ein Befehl (ls, cp, …) im Verzeichnis ausgeführt werden muss.

  1. Der nächste Dreierblock umfasst die gleichen Rechte für die zugeordnete Gruppe (rwx, siehe eben).
  2. Der dritte Dreierblock schließlich gibt die Rechte für alle nutzenden Personen an (ebenfalls rwx, siehe eben).
  • Ein Beispiel:
ls -la /home/myuser/test
total 10
drwxr-xr-x    3 myuser   student       512 2005-02-18 14:29 .
drwxr-xr-x  124 myuser   student      6656 2005-02-18 14:28 ..
drwxr-xr-x    2 myuser   student       512 2005-02-18 14:29 somedir
-rw-rw-r--    1 myuser   student         0 2005-02-18 14:29 somefile
lrwxrwxrwx    1 myuser   student         8 2005-02-18 14:29 somelink -> somefile

Hier gehören alle Objekte der nutzenden Person myuser und der Gruppe student, wobei die Datei somefile und damit auch der Symlink somelink von jedem Mitglied der Gruppe geschrieben werden dürfen. Alle dürfen alles lesen, aber nur dann, wenn alle Verzeichnisse in der Verzeichnishierarchie bis zum aktuellen für die jeweils nutzende Person les- und ausführbar sind. Will man diese Rechte auf eine bestimmte Gruppe von nutzenden Personen einschränken, bieten sich ACLs an.

Das Setzen und Verändern der Rechte geschieht in der Form Wem, Entziehen/Verleihen (+/-), Was:

chmod go-r /home/myuser/test/somefile
chmod g+w /home/myuser/test/somedir

Diese Befehle entziehen erst Gruppe und Rest die Leserechte auf die Datei somefile und vergeben dann Schreibrechte für die Gruppe auf somedir. Rechte können auch per Angabe von Zahlenwerten gesetzt werden:

chmod 644 /home/myuser/test/somefile
chmod 755 /home/myuser/test/somedir

Obige Befehle setzen die Rechte für somefile auf Lesen/Schreiben für die besitzende Person und Lesen für alle anderen sowie Lesen/Schreiben/Ausführen für den Besitzer von somedir und Lesen/Ausführen für alle anderen. Die Angabe der Werte erfolgt über Oktalzahlen. Die Reihenfolge ist: besitzende Person, Gruppe, Rest, wobei sich die Werte für Lesen (4), Schreiben (2) und Ausführen (1) (oktal) addieren.

Im Gegensatz zu Windows-Systemen ist eine Datei genau dann ausführbar, wenn der entsprechende nutzende Person das Unix-Recht dazu hat, unabhängig von der Dateierweiterung.

ACLs

Neben den Unix-Rechten spielen in der Praxis (bei den Poolrechnern) jedoch auch noch ACLs eine Rolle.

Bei Verzeichnissen bedeutet das Recht zum Ausführen, dass man in das Verzeichnis wechseln darf. Symlinks (anzulegen mit ln -s) haben alle Rechte „gesetzt“, da sich ihre Rechte von den Rechten des verlinkten Objekts ableiten. ACLs

Access Control Lists (ACLs) erlauben eine feinkörnigere Rechtevergabe als die klassischen Unix-Rechte. So können einzelnen nutzenden Personen Rechte für Dateien und Verzeichnisse verliehen und entzogen werden.

ACLs finden sich z.B. als Teil von Microsofts Dateisystem NTFS, aber auch bei Sparc/Solaris in Form von UFS. Dort heißen die beiden nötigen Befehle getfacl und setfacl.

Für eine generelle Einführung in ACLs (sowie eine kurze Beschreibung zur Einrichtung eines CVS-Repositories wie unten beschrieben) siehe z.B. EiSE ACL Einführung. Um bestimmten anderen nutzenden Personen den Zugriff auf das eigene Home-Verzeichnis zu gewähren (wie für CVS nötig), geht man für jeden einzelnen nutzenden Personen des Projekts wie folgt vor, wobei someuser der jeweilig nutzenden Person ist:) und überprüft das Ergebnis schließlich mit getfacl:

setfacl -m u:someuser:rx ~
setfacl -m u:someuser:rwx ~/myproject
getfacl ~

Notiz: Wobei die Welle od. Tilde ~ für das eigene Heimatverzeichnis steht.

Der erste Befehl ermöglicht es dem User „someuser“ das Heimatverzeichnis zu betreten, der zweite ermöglichen ihm auch den Schreibzugriff auf „myproject“.

Möchte man, dass neu angelegte Dateien und Verzeichnisse ebenfalls die Rechte vom jeweiligen Verzeichnis erben, so muss der setfacl Befehlt mit einer kleinen Modifikation erneut ausgeführt werden:

Mit

setfacl -d u:someuser project

werden die per ACL eingeräumten Rechte someuser auf project wieder gelöscht.

Dateien oder Verzeichnisse, zu denen ein ACL-Eintrag existiert, werden bei ls -al mit einem + markiert:

-rw-rw-r--+ 1 myself mygroup [...] project
-rw-r----- 1 myself mygroup [...] some_private_stuff

Will man die Rechte für neu anzulegende Dateien in einem Verzeichnis festlegen (default permissions), kann man das beispielsweise so tun (exklusiver Zugriff für die besitzende Person):

setfacl -d -m u:someuser:rwx ~/myproject

Für weitere Fragen empfiehlt sich

man setfacl

.


Andere Sprachen
Übersetzungen dieser Seite: