Access Control Lists
Die in der GSI-Linux-Farm verwendeten Dateisysteme unterstützen erweiterte Zugriffsrechte, sogenannte
ACLs (Access Control Lists). Auf diese Weise lassen sich neben den klassischen UNIX-Dateisystemberechtigungen für Besitzer (
user), Gruppe (
group) und Rest der Welt (
others) individuelle Rechte für weitere Benutzer bzw. Gruppen vergeben. Auch die verzeichnisweise Vererbung von Zugriffsrechten an neu erstellte Dateien ist damit möglich.
Allgemeine Informationen zu
ACLs finden sich beispielsweise in
Wikipedia (deutsch), Details zu den
ACLs unter Linux auf der
Webseite der Entwickler (engl.).
Werkzeuge für die Kommandozeile
Darstellung der ACLs mit ls -l
Bedauerlicherweise sind erweiterte Zugriffsrechte mit
ls -l
nur anhand eines Pluszeichens hinter den klassischen UNIX-Rechten zu erkennen:
user@host:~$ ls -l blafasel.txt
-rw-rw----+ 1 user group 42 2000-11-11 11:11 blafasel.txt
Ferner ist an Stelle der Gruppenberechtigung nun die »Maske« zu sehen, was zu Verwirrung führen kann. Die Maske entspricht dabei den maximalen Zugriffsrechten, die irgendeinem Benutzer oder irgendeiner Gruppe eingeräumt wurden.
Stolperfallen bei Dateien mit ACLs
Während bei einem Verschieben einer Datei mit
mv
die
ACLs erhalten bleiben, gehen diese beim Erstellen einer Kopie mit
cp
verloren, wenn nicht der Schalter
-p
(
preserve) verwendet wird.
Ältere Versionen von
tar
sind nicht in der Lage,
ACLs zu erfassen. Diese müssen vor der Archiverstellung in eine Datei geschrieben werden, etwa für das aktuelle Verzeichnis mit
getfacl -R --skip-base . > acl.dump
. Nach dem Auspacken des tar-Archives lassen sich daraus die erweiterten Zugriffsrechte wiederherstellen:
setfacl --restore acl.dump
.
Als Alternative bietet sich die Verwendung von
star
oder einer neueren Version von
tar
mit den Schaltern
--acls
bzw.
--xattrs
an.
Kommandos zur Verwendung der ACLs
Zu Anzeige und Verwaltung der
ACLs stehen zwei Kommandos bereit.
Mit
getfacl
werden die erweiterten Zugriffsrechte ausgegeben, z.B.
user@host:~$ getfacl blafasel.txt
# file: blafasel.txt
# owner: user
# group: group
user::rw-
user:onormalb:rw-
group::r--
mask::rw-
other::---
Hier ist zu erkennen, daß neben dem Dateibesitzer »user« auch der Benutzer »onormalb« Lese- und Schreibrecht für die Datei
blafasel.txt
hat.
Soll z.B. ein Benutzer der sich in einer anderen Gruppe befindet Zugriff auf eine Datei oder Verzeichnis bekommen, muss dafür nicht extra eine neue Gruppe mit allen Benutzern die Zugriff brauchen erstellt werden, sondern nur der unten stehende Befehl ausgeführt werden.
Erweiterte Zugriffsrechte werden mit dem Befehl
setfacl
vergeben. Soll etwa Benutzerin »anormalb« ebenfalls Lese- und Schreibrecht für die Datei
blafasel.txt
erhalten, lautet das Kommando:
user@host:~$ setfacl -m u:anormalb:rw- blafasel.txt
ACLs lassen sich natürlich auch wieder entfernen, etwa die Zugriffsrechte für »onormalb« auf die Datei
blafasel.txt
mit:
user@host:~$ setfacl -x u:onormalb blafasel.txt
Weitere Einzelheiten sind in den Handbuchseiten zu
setfacl
bzw.
getfacl
zu finden.
Eine sehr interessante Anwendungsmöglichkeit für
ACLs ist die automatische Vergabe erweiterter Zugriffsrechte auf neu erstellte Dateien. Diese „Vererbung“ muß zunächst als Voreinstellung (Schalter
-d
für
default) für ein Verzeichnis festgelegt werden:
user@host:~$ mkdir zzz
user@host:~$ setfacl -d -m g:nogroup:rw- zzz
user@host:~$ getfacl -d zzz
# file: zzz
# owner: user
# group: group
user::rwx
group::r-x
group:nogroup:rw-
mask::rwx
other::---
Nun erhalten alle neu erstellten Dateien in diesem Verzeichnis automatisch Lese-und Schreibrecht für die Gruppe »nogroup«:
user@host:~$ touch zzz/datei
user@host:~$ getfacl zzz/datei
# file: zzz/datei
# owner: user
# group: group
user::rw-
group::r-x #effective:r--
group:nogroup:rw-
mask::rw-
other::---
ACLs im Konqueror
Auch der KDE-Dateimanager
konqueror
ist in der Lage, erweiterte Zugriffsrechte anzuzeigen und zu editieren (Grafik zum Vergrößern anklicken):
">https://wiki.gsi.de/pub/Linux/AccessControlLists/acl_konq.png
Nach Rechtsklick auf eine Datei ist dazu im Menüpunkt "Eigenschaften" der Reiter "Berechtigungen" zu wählen. Hinter der Schaltfläche "Erweiterte Berechtigungen" verbirgt sich ein Fenster, in dem neben den klassischen UNIX-Rechten auch die
ACLs zu sehen sind.
Offenbar werden Änderungen, die mit Hilfe der Kommandozeilenwerkzeuge erfolgen, erst nach einem manuellen Aktualisieren des Konquerors (z. B. mittels
[F5]
) korrekt angezeigt.
--
StefanHaller - 16 Mar 2011