Mac OS X Consoliero – Dokumentationen für Administratoren

Consoliero Teil 19

access control list mit Mac OS X 10.4 Client

Eine access control list (ACL) ist eine Liste mit Regeln, welche Benutzern oder Gruppen spezifizierten Zugriff auf Objekte eines Filesystems gewährt oder verweigert. Im Gegensatz zu den bisherigen Berechtigungen, schreiben, lesen und ausführen, können wir über ACL's dezidierte Berechtigungen wie etwa "Ordner auflisten", Berechtigungen lesen" oder "Ordner erstellen" auf Benutzer- und Gruppen-Ebene einzeln festlegen. Access controll list (ACL) kannte man bisher nur von AIX und Windows. Wenn man da ohne richtige Strategie arbeitete, konnte es schon einmal passieren, dass man als root oder Administrator plötzlich eine Datei nicht mehr lesen oder löschen kann, und diese für immer auf der Disk bleiben wird.

Die Implementierung die Apple realisiert hat, ist auf jeden Fall sehr intuitiv und macht Sinn. Es wurden keine neuen Terminalbefehle erfunden, sondern bestehende Befehle erweitert. Inwiefern eine Implementierung auf einem Client-System Sinn macht, ist ein anderes Thema. Wer Interesse daran hat, schaut sich diese Einführung einmal an.

8.2005 – Christoph Müller

1. Einführung

Eine access control list (ACL) ist eine Liste mit Regeln welche Benutzern oder Gruppen spezifizierten Zugriff auf Objekte eines Filesystems gewährt oder verweigert. Wie die bisherigen normalen Berechtigungen (rwx) können diese vererbt (inherited) werden, aber sie sind nicht auf das Modell von Benutzer, Gruppe und Others beschränkt. Das erlaubt uns Administratoren unsere Ordnerstrukturen auf den Fileservern besser zu strukturieren und zu schützen. Das klassische Modell (rwx) bleibt auch in Mac OS X 10.4 erhalten. Jedoch wirken die ACL's mit oder gegen diese Berechtigungen:

$ ls -le
drwxr-xr-x + 5 pts pts 170 Aug 5 23:03 Testfolder
0: user:user1 allow list,file_inherit,directory_inherit
Wie man sieht, die e-Option für ls zeigt im Terminal die ACL-Informationen an. Wenn man die e-Option nicht benutzt und ls ganz normal benutzt, signalisiert einem ls mit einem +, dass ACL-Informationen vorhanden sind. Wie man am Testordner sehen kann, ist der Besitzer pts. Der Benutzer user1, hat aber die Berechtigung die Dateien aufzulisten.
2. ACL aktivieren

Die einzige Bedingung für ACL ist, das Filesystem muss HFS+ sein, und als Betriebssystem muss im Minum 10.4.0 installiert sein. Aktiviert und deaktiviert wird ACL mit dem Befehl fsaclctl.

$sudo fsaclctl -p / -e

Das Aktivieren von ACL auf einem Filesystem hat ohne Modifikationen keinen Einfluss auf die Stabilität und kann ohne weitere Bedenken auf jedem Volumen aktiviert werden. Bevor man auf allen vorhandenen Volumen ACL aktiviert, sollte man bedenken, wenn man ACL auf einem FireWire-Volumen aktiviert, gelten die Informationen, auch wenn das Volumen an einen anderen Mac angeschlossen wird.

Wenn es passiert, dass man den root ausgesperrt hat, kann man mit fsaclctl -p / -d ACL auf einem Volumen deaktivieren. Danach löscht man die Datei und aktiviert ACL erneut. Für eine Liste aller Optionen von fsaclctl schaut man sich am besten kurz die man-page an. Viele Optionen sind es nicht.

3. ACL Einträge erstellen (ACE)

Jeder Eintrag in die ACL wird access control entity, oder ACE genannt. Jedes ACL enthält im Minimum eine ACE. Eine ACE besteht aus drei Komponenten: der Benutzer oder die Gruppe welche die Regel betrifft, ob es eine Erlauben- "allow" oder Verweigern- "deny" Regel ist, und die Berechtigung welche die Regel entweder bewilligt oder widerruft. Das ist soweit selbsterklärend. Es gibt aber ein paar Einschränkungen.

Man kann nicht spezifizieren, ob die ACE einen Benutzer oder eine Gruppe betrifft. So darf in einem System welches ACL nutzt, niemals der Benutzername und Gruppenname identisch sein.

Der Zugriff auf ein ACL geschütztes Objekt wird in der Reihenfolge der Einträge überprüft. Falls widersprüchliche Zugriffsrechte über Gruppenzugehörigkeiten entstanden sind, können so unter Umständen Benutzer trotzdem Zugriff erhalten.

Es gibt 17 Berechtigungen welche über ACL angewendet werden können. Über den Arbeitsgruppen-Manager vom Mac OS X 10.4 Server kann man diese Berechtigungen grafisch nutzen (Abbildung 19.1). Auf dem Client müssen wir die ACL über das Terminal implementieren. Apple hat dafür keine Funktion vorgesehen. Auf dem Client wird dies mit dem Befehl chmod gemacht.

Arbeistgruppen-Manager 10.4

Abbildung 19.1 – Arbeistgruppen-Manager 10.4

Die folgenden Berechtigungen sind für Filesystemobjekte verfügbar:


• delete
• readattr
• writeattr
• readextattr
• writeextattr
• readsecurity
• writesecurity
• chown

Die folgenden Berechtigungen können auf Verzeichnisse angewendet werden:


• list
• search
• add_file
• add_subdirectory
• delete_child

Die folgenden Berechtigungen sind für Dateien, Verknüpfungen und Geräte verfügbar:


• read
• write
• append
• execute

Zusätzlich kann die Vererbung der Berechtigungen gesteuert werden:


• file_inherit
• directory_inherit
• limit_inherit
• only_inherit

Alle diese Berechtigungen sind weitgehend selbsterklärend. Zwei Berechtigungen sind etwas speziell. Zum einen die Berechtigung limit_inherit. limit_inherit erlaubt einer ACL sich nur zu den unmittelbaren nächsten Unterordner zu vererben. Die Berechtigung only_inherit erlaubt es eine ACE zu erzeugen welche zwar alle Unterordner (children) betrifft, sich selbst aber nicht (parent).

Wie bereits angeschitten wird eine ACL oder ACE mit dem Befehl chmod und der Option +a erzeugt. Die Option -a entfernt die ACL oder ACE wieder.

So, genug der Einführung. Wie sieht das nun im Terminal aus? Eine einfache ACL, welche auf alle enthaltenen Files und Ordner vererbt wird, die dem Benutzer user1 die Berechtigung gibt, die Dateien aus dem Ordner "Ordner1" zu lesen sieht so aus:

$ chmod +a "user1 allow list,directory_inherit,file_inherit" Ordner1/
$ ls -le
drwxr-xr-x + 2 pts pts 68 Aug 6 21:47 Ordner1
0: user:user1 allow list,file_inherit,directory_inherit
Die ACL wird nun auf alle Files und Ordner innerhalb des Ordners "Ordner1" vererbt. Wenn wir also einen neuen Ordner oder eine neue Datei erzeugen, erhält dieser automatisch die ACL des übergeordneten Ordners (parent).

$ mkdir Ordner2
ls -le
drwxr-xr-x + 2 pts pts 68 Aug 6 21:57 Ordner2
0: user:user1 inherited allow list,file_inherit,directory_inherit

Die ACE welche wir erzeugt haben, hat die Nummer "0". Löschen können wir diese nun mit der Option -a:

$ chmod -a "user1 allow list,directory_inherit,file_inherit" Ordner1/

Oder über die ACE-Nummer:

$ chmod -a# 0 Ordner1/

Der Aussage von ls -e kann einem leicht in die Irre führen. Obwohl eine Vererbung stattfindet, zeigt ls -e einem die ACE bein einem vererbten Objekt nicht immer an. Bisweilen nützt es via cd .. zwei Ebenen zurück zu wechseln und dann mit cd wieder zum Objekt zurück zu kehren. Vermutlich ein Fehler der noch behoben wird!

4. Sandbox

Für die, welche das Terminal lieber aussen vor lassen, gibt es mittlerweile eine Alternative. Sie nennt sich Sandbox. Sandbox bietet eine grafische Oberfläche an, um ACL's und ACE's zu erstellen und zu modifizieren (Abbildung 19.2).

Abbildung 19.2 – Sandbox

5. Implementierungs Richtlinien

Die Möglichkeiten, um mit ACL's Benutzer zu beschränken, sind praktisch unbegrenzt. Unbegrenzt sind auch die Möglichkeiten Fehler zu machen und sich selbst auszuschliessen, oder die ACL's so verwirrend anzulegen, dass einem nach ein paar Monaten nicht mehr klar ist, wie man das eigentlich gemacht hat. Um das zu verhindern, empfiehlt sich folgende Richtlinien zu beachten:

  • Strukturieren Sie die Benutzer in Gruppen
  • Benutzer können auch Mitglieder von mehreren Gruppen sein. Vielfach genügt es das Organigramm über Benutzergruppen abzubilden, um alle relevanten Gruppen zu haben
  • Zugriffsrechte, welche über die klassichen Berechtigungen (rwx) realisiert werden, können nicht mit ACL's lösen
  • Ein "deny" nur in äussersten Notfällen benutzen
  • Besser Ordnerstrukturen umorganisieren und über Benutzergruppen managen, als komplexe ACL's Lösungen suchen

Alle Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind möglicherweise eingetragene Warenzeichen. Jegliche Bewertungen basieren auf den Erfahrungen des Autors und sind nicht signifikant.

Das Copyright liegt beim Autor. Der „Mac OS X Consoliero“ ist jedoch Shareware und darf für nichtkommerzielle private Zwecke frei verwendet werden. Diese Bestimmung schließt Ausbildung und kommerzielle Verteilung zwingend ein. Bei Fragen zur Verwendung kontaktieren Sie den Autor bitte unter: chm@pts.ch.

Version 1.1, 8.2005 © Christoph Müller, www.pts.ch

Zudem führen wir Seminare und Kurse durch und schreiben Bücher und Dokumentationen für Praktiker:

SMI, Zofingen
Consoliero Client
ISBN No. 3-905647-17-6

Home | IT-Support | Unterhalt | Cross Platform | at work | Kontakt | Consoliero| lan-partys