Erweiterung der Dateizugriffsrechte auf den AIX-Workstations
(Günther Teichmann, HRZ)Wer war nicht schon einmal in einer ähnlichen Situation? Sie möchten einem Kollegen eine Datei zugänglich machen und können dies nur erreichen, indem Sie die Datei für alle Benutzer auf dem betreffenden UNIX-Rechner freigeben. Dies ist äußerst unbefriedigend und manchmal aus Gründen des Datenschutzes nicht machbar.
Alle anderen Lösungen (z.B. über eine neue Benutzergruppe) scheitern normalerweise daran, daß Sie dafür den Systemadministrator (mit root-Berechtigung!) benötigen. Es kann nicht Aufgabe des Systemadministrators sein, solche benutzerspezifischen Arbeiten zu übernehmen.
Eine vernünftige Methode, spezielle Dateizugriffsrechte zu vergeben, bietet jetzt die Erweiterung des Betriebssystems AIX 3.2. Die Methode wird unter dem Begriff "Access Control Lists (ACL)" zusammengefaßt und ermöglicht die Vergabe zusätzlicher Dateizugriffsrechte, die der Benutzer selbst setzen kann.
Sehen wir uns zunächst einmal die Standard-Zugriffsrechte unter dem Betriebssystem UNIX an. Diese können auf drei verschiedenen Ebenen vergeben werden:
a) Zugriffsrechte für den Eigentümer (owner, user)
b) Zugriffsrechte für die Gruppe (group)
c) Zugriffsrechte für alle anderen Benutzer (others)
Außerdem kann bei der Vergabe der Zugriffsrechte differenziert werden, ob der Zugriff auf eine Datei nur zum Lesen oder nur zum Schreiben berechtigt oder ob die Datei nur ausgeführt werden darf. Beim Auflisten des Dateienkatalogs mit dem UNIX-Kommando ls -l wird das Leserecht mit r, das Schreibrecht mit w und das Ausführrecht mit x angezeigt.
Beispiel:
-rwxrw-r-- 1 g099 hrz ... testdaten
Erläuterung:
Ab der zweiten Spalte werden die neun Zugriffsrechte einer Datei aufgelistet und zwar in der Reihenfolge: Eigentümer (hier: rwx), Gruppe (rw-) und alle anderen Benutzer (r).
Wenden wir uns jetzt dem neuen Konzept zur Vergabe von speziellen Zugriffsrechten zu. Diese werden in der Access-Control-List (ACL) eingetragen und im System gespeichert. Nur der Eigentümer der Datei hat Zugriff auf die ACL und kann diese editieren.
Die folgenden Anweisungen stehen zur Pflege der ACL zur Verfügung:
- aclget
- listet den Inhalt der ACL auf
- acledit
- mit Hilfe eines Editors können Zugriffsrechte eingetragen bzw. abgeändert werden.
- aclput
- Zugriffsrechte, die in einer Datei gespeichert sind, können "eingefahren" werden.
Sie können sich mit dem UNIX-Kommando ls e anzeigen lassen, welche Dateien im aktuellen Verzeichnis eine ACL besitzen.
Liste der speziellen Zugriffsrechte
Wie bereits erwähnt, listet die Anweisung
aclget [ -o listdatei] dateiname
den Inhalt der Access-Control-List auf. Existiert keine ACL, erhalten Sie lediglich die Zugriffsrechte für die Standardgruppen owner, group und others.
Beispiele:
a) Für die Datei messwerte wurde noch keine ACL eingerichtet:
aclget messwerte
attributes:
base permissions
owner(g099): rw-
group(test): r--
others: ---
extended permissions
disabled
Im Beispiel ist die Eingabe des Benutzers fett dargestellt.
b) Die Datei strukturdaten besitzt bereits eine ACL (auch hier ist die Eingabe des Benutzers wieder fett dargestellt):
aclget strukturdaten
attributes:
base permissions
owner(g099): rw-
group(test): ---
others: ---
extended permissions
enabled
permit rw- u:gz13
specify r-- u:hz24,g:fhgi,g:projekt1
Die Bedeutung der Schlüsselworte permit und specify wird im Zusammenhang mit der Anweisung acledit beschrieben.
Zugriffsrechte eintragen
Sollen neue Zugriffsrechte gesetzt werden, gehen Sie von der oben beschriebenen Listausgabe des Kommandos aclget aus und editieren diese, indem Sie beispielsweise neue Zugriffsrechte anfügen oder vorhandene abändern. Beim Zurückschreiben der Listausgabe werden die neu gesetzten oder geänderten Zugriffsrechte überprüft, ob sie fehlerfrei sind. Ist dies der Fall, werden sie in die ACL eingetragen, andernfalls erhalten Sie eine Fehlermeldung.
Mit dem Kommando
acledit dateiname
können die beschriebenen Schritte zur Vergabe von Zugriffsrechten durchgeführt werden. Dabei greift acledit auf die UNIX-Umgebungsvariable EDITOR zu und benutzt den dort angegebenen Editor.
Ist die Variable EDITOR nicht definiert, müssen Sie sie vor dem Aufruf von acledit geeignet besetzen. Beispielsweise mit
export EDITOR=/usr/bin/vi
falls der Editor vi benutzt werden soll.
Die Vorgehensweise beim Setzen neuer Zugriffsrechte soll jetzt im Detail beschrieben werden. Ausgangspunkt ist dabei die Datei messwerte.
Das Kommando acledit messwerte erstellt eine Hilfsdatei mit der ACL-Ausgabe für die Datei messwerte und ruft den eingestellten Editor (hier vi) auf, der den Inhalt der Hilfsdatei anzeigt. Jetzt können die neuen Zugriffsrechte oder Änderungen eingetragen werden. Das Schlüsselwort "disabled" muß durch "enabled" ersetzt werden; die neuen Zugriffsrechte können dann angefügt werden.
Beispiel für neue Zugriffsrechte:
permit rw- u:gz15 specify r-- u:hz24,g:fhgi,g:projekt1
Wird der Editor nach Abschluß der Editierarbeiten verlassen, wird der Benutzer zusätzlich gefragt, ob die Änderungen in die ACL eingetragen werden sollen ("Should the modified ACL be applied? (yes) or (no)"). Die Antwort yes bewirkt, daß die neu eingetragenen Zugriffsrechte überprüft und bei Fehlerfreiheit in die ACL übertragen werden.
Syntax
Die ACL-Anweisungen werden im folgenden Format eingegeben:
Schlüsselwort Zugriffsmodus Benutzerdaten
Dabei muß jede Anweisung in einer separaten Zeile stehen. Folgende Schlüsselwörter sind vorgesehen:
- Schlüsselwort
- Bedeutung
- permit
- Der Zugriff auf die Datei wird ermöglicht.
- deny
- Dem Benutzer/der Benutzergruppe wird der Zugriff verweigert.
- specify
- Mit specify können Zugriffsrechte durch zusätzliche Bedingungen eingeschränkt werden.
Als Zugriffsmodus muß der bereits bekannte Dreierblock bestehend aus den Zeichen r, w, x oder - eingesetzt werden.
Die Benutzerdaten werden aus den Angaben u:benutzerkennung oder g:gruppenkennung gebildet.
Beispiele:
a) permit r-- g:projekt1
Die Benutzer der Gruppe projekt1 dürfen die Datei lesen.
b) specify rw- u:gz88,g:verwaltung,g:technik
Der Benutzer mit der Kennung gz88 hat nur dann das Lese- und Schreibrecht, wenn er sowohl der Gruppe verwaltung als auch der Gruppe technik angehört.
Zugriffsrechte für die Unterverzeichnisse
Es reicht nicht aus, nur die Zugriffsrechte auf Dateiebene zu setzen. Auch bei den übergeordneten Verzeichnissen müssen in analoger Weise Zugriffsrechte eingetragen werden. Insbesondere muß immer auch das Ausführrecht (x) gesetzt werden, damit der berechtigte Benutzer die Verzeichnisse, die zur Datei hinführen, aufrufen darf.
Liegt die Datei beispielsweise im Stammverzeichnis ($HOME) des Benutzers, müssen die Zugriffsrechte auf Dateiebene und im Stammverzeichnis eingetragen werden, damit die Datei von einem anderen Benutzer erreicht werden kann.
Betrachten wir nochmals das Beispiel mit der Datei messwerte. Wir hatten dort lediglich Zugriffsrechte für die Datei eingetragen, aber noch keine für das Stammverzeichnis. Dies muß noch nachgeholt werden, indem wir acledit wieder aufrufen und in analoger Weise Zugriffsrechte eintragen (die Eingabe des Benutzers ist fett dargestellt):
acledit $HOME permit r-x u:gz15 specify r-x u:hz24,g:fhgi,g:projekt1
Auf Verzeichnisebene muß immer auch das Ausführrecht (x) eingetragen werden, damit der angegebene Benutzer auch auf das Verzeichnis zugreifen darf. Das Leserecht (r) schafft lediglich die Möglichkeit, daß der eingetragene Benutzer auch den Katalog des Verzeichnisses lesen darf.
Bei den Dateien, die "tief unten" in der Verzeichnishierarchie eingebettet sind, ist der Verwaltungsaufwand für die Zugriffsrechte nicht unerheblich. Sie können sich die Arbeiten jedoch dadurch vereinfachen, daß Sie eine ACL-Eingabedatei einrichten, die die erforderlichen Angaben für ein Verzeichnis enthält, und diese dann mit dem Kommando aclput in die übergeordneten Verzeichnisse "einfahren".
Das Kommando aclput hat die folgenden Parameter:
aclput [ -i eingabedatei ] datei
Eine ACL-Eingabedatei (Dateiname acleingabe) könnte beispielsweise wie folgt aussehen:
attributes:
base permissions
owner(g099): rw-
group(test): ---
others: ---
extended permissions
enabled
permit r-x u:gz13
specify r-x u:hz24,g:fhgi,g:projekt1
Mit
aclput -i acleingabe versuch1
lassen sich dann die Zugriffsrechte in dem Verzeichnis versuch1 "einfahren".
Beachten Sie, daß mit dem Kommando aclput auch stets die "base permissions" neu gesetzt werden, so daß vorhandene Standardzugriffsrechte überschrieben werden. Bevor Sie aclput einsetzen, sollten Sie sich überzeugen, ob nicht doch spezielle Zugriffsrechte in der "base permissions" gesetzt sind, die Sie beibehalten möchten.
Die Access-Control-Lists sind voll in das Betriebsystem AIX integriert und werden von den Kommandos beachtet. Eine Ausnahme gibt es jedoch: Wenn Sie das Kommando chmod in der numerischen Form aufrufen (z.B. chmod 640 messwerte), wird eine bestehende ACL außer Kraft gesetzt. Das bedeutet, die eingetragenen "extended permissions" werden "disabled".
In diesem Zusammenhang ist ein weiteres Kommando hilfreich: Möchten Sie feststellen, welche Dateien im Verzeichnis eine ACL besitzen, rufen Sie das Kommando ls mit der Option -e auf. Sie erhalten dann eine Liste, die bis auf eine Spalte mit der Ausgabe von ls -l identisch ist. In dieser Spalte (sie ist an den Neunerblock rwxrwxrwx angefügt) steht +, wenn eine ACL existiert. Andernfalls wird in dieser Spalte - eingetragen.
Weitere Information
Im InfoExplorer (Aufruf info) ist die Methode der Access-Control-Lists ausführlich beschrieben. Sie steht im Manual "System User's Guide: Operating System and Devices". Sie finden den Text am schnellsten über den Suchvorgang
Simple Search
indem Sie als Suchbegriff
access control lists
eingeben und die Option
Search Title Only
aktivieren. Sie stoßen dann genau auf das Kapitel
Access Control Lists
im Manual "System User's Guide: Operating System and Devices".
![[HRZ-Logo; anklickbar] [HRZ der JLU Gießen]](/hrz/bilder/hrzlogo6.gif)
![[JLU-Logo mit Wappen; anklickbar] [JLU-Logo mit Wappen; anklickbar; alt+j]](/hrz/bilder/jlu-logo.png)
