ALIs

kommt noch

Das Andrew File System (AFS)

Allgemeines

Die Home-Directories für Benutzer der Sun-, HP- und IBM-Workstations befinden sich unter AFS, was unter anderem zur Folge hat, daß jeder Benutzer genau ein gemeinsames Home-Directory für alle oben genannten Rechnersysteme hat. AFS bietet gegenüber herkömmlichen netzwerkorientierten File-Systemen wie NFS eine Reihe an Vorteilen: einheitlicher globaler Namensraum, Reduktion der Netzlast, höhere Sicherheit, individuelle Vergabe von Zugriffsrechten. Die von AFS gebotene höhere Sicherheit hat auch Auswirkungen auf Validierung und Login (vgl. Abschnitt Hinweise und Tips).

File-, Directory- und Baumstrukturen bleiben (aus Benutzersicht) davon unberührt, d.h. der Benutzer kann seine Dateien wie von anderen Unix-Systemen am LRZ her gewohnt ansprechen. Mit den von AFS gebotenen Möglichkeiten kann man als Benutzer in Eigenregie festlegen, wem man welchen Zugriff auf seine Directories und die darin enthaltenen Dateien einräumen möchte. Unter "Standard"-Unix (incl. NFS) ist dies nur im Rahmen vorgegebener Gruppen möglich, auf deren Zusammensetzung man meist keinerlei Einfluß hat und die vom Systemverwalter eingetragen werden müssen. Dieser Bereich der Directory- (und damit File-) Berechtigungen macht Änderungen an der Benutzerschnittstelle nötig (siehe unten).

Für den Benutzer macht sich der Einsatz von AFS gegenüber "Standard"-Unix mit NFS zunächst dadurch bemerkbar, daß die Vergabe von Zugriffsrechten für andere (group/others) nicht über das Kommando chmod geschieht, sondern über die beiden neuen Kommandos fs und pts (siehe Abschnitt AFS-Kommandos fs und pts) erfolgen muß.

Zugriffsrechte unter AFS

Einer der großen Vorteile von AFS liegt für den Benutzer in der Möglichkeit, individuell Zugriffsrechte für seine Directories und die darin enthaltenen Dateien zu vergeben. Wir wollen dies im folgenden etwas näher erläutern, wobei wir die relevanten Kommandos im Abschnitt AFS-Kommandos fs und pts beschreiben.

Unter AFS haben von den "Standard"-Unix-Berechtigungen nur die "rwx-Bits" für den Besitzer (owner) einer Datei Bedeutung, alle anderen Unix-Berechtigungen, also die "rwx-Bits" einer Datei für group und other sowie alle Directory-Berechtigungen (d.h. die "rwx-Bits" für Directories), sind wirkungslos (auch wenn man sie sich nach wie vor mit dem ls-Kommando anzeigen lassen und sie mit dem chmod-Kommando setzen kann). Auf die Bedeutung der "owner-rwx-Bits" für die AFS- Berechtigungen ("Access Rights") kommen wir am Ende dieses Abschnitts noch zu sprechen.

In die entstehende Lücke treten die sogenannten "Access Control Lists" (ACLs) und Access Rights für Directories.

Bei den nachfolgenden Erläuterungen ist zwischen den Begriffen "Eigentümer" eines Directories, also demjenigen, der Rechte vergibt, und dem "Inhaber" eines Rechtes, also demjenigen, dem vom Eigentümer Rechte eingeräumt wurden, zu unterscheiden. Per Voreinstellung ist der Eigentümer auch Inhaber aller Rechte.

Durch ACLs wird definiert, welche Rechte einem Benutzer oder einer Gruppe an einem Directory und den darin enthaltenen Dateien eingeräumt werden, wobei für jedes Directory eine eigene ACL existiert, u.U. vom Vaterdirectory ererbt. Jede ACL kann bis zu 20 Einträge enthalten, von denen jeder die Zugriffsrechte für dieses Directory für einen Benutzer oder eine Gruppe festlegt.

Einige wichtige Aspekte sollte man stets beachten:

  • Die Vergabe der AFS-Rechte erfolgt stets auf Directory-Ebene, nicht auf Datei-Ebene! Man hat daher stets für alle Dateien desselben Directories die gleichen AFS-Rechte. Kopiert man eine Datei (in ein anderes Directory), so gelten für diese Kopie die ACLs, die für alle Dateien dieses (neuen) Directories gelten. Der Kopie werden also nicht die dem Original zuerkannten Rechte mitgegeben.
  • Wird ein neues Directory angelegt, so erhält es die gleichen Zugriffsrechte, die zu diesem Zeitpunkt für sein Vaterdirectory gelten, d.h. das neue Directory erhält zunächst eine Kopie der ACL seines Vaterdirectories. Diese ACL wird dann eigenständig verwaltet und kann individuell verändert werden.
  • Ist die ACL eines Subdirectories "großzügiger" als die seines Vaterdirectories, so kann es für die Inhaber der Rechte schwer oder unmöglich sein, das Subdirectory zu erreichen. Zumindest das Lookup-Recht (s.u.) muss für das Vaterdirectory gesetzt sein, da man sonst keine Chance hat, das Subdirectory zu erreichen. (Analog dem x-Bit, das unter Unix für ein Directory gesetzt sein muß, damit man in das Directory hineinsehen kann.)
  • Will man mehreren Benutzern, z.B. den Mitgliedern einer Arbeitsgruppe, die gleichen Rechte einräumen, so ist es häufig sinnvoll, die betreffenden Benutzernummern in einer AFS-Gruppe zusammenzufassen und dieser Gruppe die gewünschten Rechte einzuräumen. Insbesondere kann jeder Benutzer einer AFS-Gruppe Rechte gewähren, auch ohne selbst Mitglied oder Eigentümer der Gruppe zu sein. Man kann maximal 20 Gruppen einrichten. Um ein Directory jedermann zugänglich zu machen, kann man die gewünschten Rechte der Gruppe "system:anyuser" gewähren.

Es gibt 7 AFS-Zugriffsrechte:

l (Lookup):
Der Inhaber dieses Rechts kann sich den Inhalt des betreffenden Directories (ls) sowie den ausführlichen Directory-Status (ls -ld) und die ACL des Directories ansehen (fs listacl). Einblick in oder sonstiger Zugriff auf Subdirectories hängen von den ACLs dieser Subdirectories ab, setzen aber zumindest das Lookup-Recht für dessen Vaterdirectories voraus.
i (Insert):
Der Inhaber dieses Rechts kann in dem betreffenden Directory neue Files und Subdirectories anlegen. Die Möglichkeit, bereits existierende (auch von ihm selbst angelegte) Dateien zu lesen oder zu verändern, hat der Inhaber dieses Rechts damit aber nicht (vgl. auch unten: Delete, Read, Write). Auf Grund der Vererbung von Rechten hat er jedoch auch das Insert-Recht in von ihm angelegten Directories.
d (Delete):
Der Inhaber dieses Rechts kann in dem betreffenden Directory Dateien und Subdirectories löschen. Auch ein Verschieben (mv) ist möglich, natürlich nur in Directories, für die er das Insert-Recht hat.
a (Administer):
Der Inhaber dieses Rechts kann die ACL des betreffenden Directories verändern, also selbst Rechte vergeben. Dieses Recht hat und behält jeder Benutzer für sein eigenes Home-Directory, selbst wenn er sich aus der ACL für sein eigenes Home-Directory gelöscht haben sollte.
r (Read):
Der Inhaber dieses Rechts kann den Inhalt des betreffenden Directories inspizieren, also die in dem Directory enthaltenen Dateien lesen. (Vgl. hierzu auch die noch folgenden Ausführungen die "owner-rwx-Bits" betreffend.) Den Zugriff auf den Inhalt von Subdirectories regeln deren ACLs.
w (Write):
Der Inhaber dieses Rechts kann die in dem betreffenden Directory enthaltenen Dateien verändern, einschließlich der mit chmod zu setzenden "rwx-Bits". (Vgl. auch die noch folgenden Ausführungen die "owner-rwx-Bits" betreffend.)
k (Lock):
Der Inhaber dieses Rechts kann Dateien des betreffenden Directories zum Lesen oder Schreiben anmelden. Derartig angemeldete Dateien können von anderen Prozessen nur noch gelesen oder gar nicht mehr verwendet werden, bis sie der Prozeß, der sie angemeldet hatte, wieder freigibt.

Diese 7 Rechte können in beliebiger Weise kombiniert werden. Für die wichtigsten Kombinationen gibt es leicht merkbare Bezeichnungen:

Abkürzung Beschreibung Liste der Rechte
write alles ohne Administer rlidwk
read Read und Lookup, also Lesezugriff auf das Directory
und die darin enthaltenen Dateien
rl
all alle rlidwka
none keine Rechte; der betreffende Benutzer bzw. die
Gruppe wird aus der ACL entfernt.
-

Neben der Möglichkeit, jemandem Zugriffsrechte zu gewähren und diese auch wieder zu entziehen, kann man Rechte auch explizit verweigern. Dies ist z.B. dann praktisch, wenn man ein Recht einer ganzen Gruppe mit Ausnahme von wenigen Gruppenmitgliedern gewähren möchte.

Vorteile und Risiken von read/lookup auf dem eigenen Home-Directory:

AFS erlaubt die Vergabe von Zugriffsrechten nur auf Directory-Ebene und nicht auf Dateiebene. Gerade im Home-Directory liegen aber häufig Dateien (z.B. .forward, .rhosts), die von außen lesbar sein müssen, will man sich nicht selbst beim Arbeiten behindern. Deshalb muß man der Gruppe "system:anyuser" die AFS-Rechte read und lookup auf seinem Home-Directory einräumen (Kommando fs setacl, vgl. Abschnitt Die AFS-Kommandos fs und pts). Man muß sich jedoch darüber im Klaren sein, daß dies nicht unproblematisch ist! Wie bereits gesagt, vererben sich AFS-Rechte auf neu angelegte Directories; will man also nicht alle eigenen Dateien für jedermann lesbar machen, muß man den Subdirectories zumindest das read-Recht wieder nehmen.

ACHTUNG :

Die Vergabe von Rechten an die Gruppe "system:anyuser" bedeutet, daß nicht nur alle Benutzer des LRZ, sondern weltweit jeder Benutzer, der Zugang zu AFS hat, diese Rechte ebenfalls hat.

Deshalb sollte man nur Dateien, die für jederman zugänglich sein sollen, in seinem Home-Directory ablegen und alle anderen Dateien immer in für andere nicht lesbare Subdirectories.

Wer Dateien, die Passworte im Klartext enthalten (z.B. .netrc), in seinem Home-Directory hat, ein Vorgehen, von dem grundsätzlich abzuraten ist, sollte davon Abstand nehmen, jedermann das Leserecht auf sein Home-Directory einzuräumen, selbst wenn er sich dadurch anderweitig das Leben schwer macht.

Einen Tip, wie man dieser Problematik zumindest in vielen Fällen begegnen kann, finden Sie im Kapitel Tips und Hinweise.

"owner-rwx-Bits":

Bisher wurde dargestellt, daß mit ACLs der Zugriff auf Directories und deren Inhalt geregelt wird. Die "owner-rwx-Bits" legen nun fest, ob man die via ACL gewährten Rechte auch tatsächlich ausüben darf:
  • Ist das r-Bit für eine Datei gesetzt, darf jeder, der rl-Berechtigung für das Directory hat, die Datei lesen.
  • Ist das r-Bit nicht gesetzt, hat niemand (einschließlich des Eigentümers!) Leseberechtigung für die Datei.
  • Ist das w-Bit gesetzt, darf jeder, der w-Berechtigung für das Directory hat, verändern, andernfalls niemand.
  • AFS unterstützt keine write-only files, da AFS zur Erstellung von "Arbeitskopien" einer Datei das r-Bit benötigt. Ein gesetztes w-Bit ohne gleichzeitig gesetztes r-Bit ist also sinnlos.
  • Das x-Bit, dem kein AFS-Access-Right entspricht, regelt das Ausführungsrecht in der gewohnten Weise.

Es sei nochmals festgehalten, daß die rwx-Bits mit dem chmod-Kommando gesetzt und gelöscht werden können.

Bemerkung:
Es ist unter AFS nicht möglich, einen "harten Link" über die Grenzen eines "Volumes" (= Home-Directory) hinaus zu setzen. Man kann also mit dem Kommando ln nur Links innerhalb des eigenen Home-Directories setzen. "Soft-Links" lassen sich wie gewohnt setzen (ln -s).

Die AFS-Kommandos fs und pts

Um die in Abschnitt Zugriffsrechte unter AFS beschriebenen Möglichkeiten zu nutzen, stehen zwei Kommandogruppen zur Verfügung: die File-Server-Kommandos (fs) und die Protection-Kommandos (pts), von denen wir die wichtigsten hier kurz beschreiben wollen.

Mit

fs help bzw. pts help
kann man sich informieren, welche Kommandos zu den beiden Gruppen gehören, und mit
fs help <command> bzw. pts help <command>
kann man die Kommandosytax abfragen. Vergleichbare Informationen erhält man auch aus den man-pages zu fs und pts mit
man fs bzw. man pts
und mit
man fs_<command> bzw. man pts_<command>
Außerdem kann man mit
fs apropos <keyword> bzw. pts apropos <keyword>
eine Schlagwortsuche in den help-Texten durchführen. Als Ergebnis erhält man die gleichen Erklärungen wie bei fs help bzw. pts help, allerdings nicht alle, sondern genau die Erklärungen, in denen die Zeichenfolge <keyword> enthalten ist. Besteht <keyword> aus mehr als einem Wort, ist die Zeichenfolge mit ' oder mit " zu klammern.

Übersicht über die AFS-Kommandos

Kommando Kurzform Bedeutung
fs apropos fs ap Schlagwortsuche in den help-Texten
fs cleanacl fs cl Bereinigen einer ACL
fs copyacl fs ca Kopieren einer ACL
fs help fs h Auflistung aller fs-Kommandos mit einer Kurzerklärung
fs listacl fs la Anzeigen einer ACL
fs listquota fs lq Anzeige von Plattenplatzlimit und -belegung
fs quota fs q Anzeige, wieviel Prozent des eigenen Plattenplatzes belegt sind
fs setacl fs sa Anlegen bzw. Verändern einer ACL
fs whereis fs whe Angabe der (physischen) Lokalisierung einer Datei bzw. eines Directories, d.h. auf welchem File-Server eine Datei bzw. ein Directory liegt.
pts adduser pts ad Hinzufügen eines Benutzers zu einer Gruppe
pts apropos pts ap Schlagwortsuche in den help-Texten
pts creategroup pts cg Anlegen einer neuen Gruppe
pts delete pts del Löschen einer Gruppe
pts examine pts e Anzeige verschiedener Daten, u.a. wieviele Gruppen man noch anlegen darf und der Gruppenrechte
pts help pts h Auflistung aller pts-Kommandos mit einer Kurzerklärung
pts listowned pts listo Anzeige der Gruppen, die einem selbst gehören
pts membership pts mem Anzeige, in welchen Gruppen man eingetragen ist oder Anzeige der Gruppenmitglieder
pts removeuser pts rem Löschen eines Benutzers aus einer Gruppe
pts rename pts ren Umbenennen einer Gruppe
pts setfields pts setf Setzen von Gruppenrechten

Einige Beispiele

für den Benutzer u987654

fs lq
informiert über das eigene Quota und seine Auslastung:
Volume Name Quota Used % Used Partition user.u987654 10000 2465 25% 49%
Partition gibt die Auslastung des Plattenbereichs an, in dem das eigene Home-Directory (=Volume in AFS-Terminologie) liegt.
fs q
gibt die prozentuale Auslastung des eigenen Quotas an:
25% of quota used.
fs la .
zeigt die ACL des aktuellen Diretories an:
Access list for . is Normal rights: system:anyuser rl u987654 rlidwka
Der Eigentümer u987654 hat per Voreinstellung alle Rechte: rlidwka, die Gruppe system:anyuser und damit jeder Benutzer hat das Leserecht für das Directory und die darin enthaltenen Dateien.
pts cg u987654:mygroup u987654
richtet die Gruppe u987654:mygroup mit dem Eigentümer u987654 ein
pts ad -user a123456 u987601 -group u987654:mygroup
Eintragen der Benutzernummern a123456 und u987601 in die Gruppe u987654:mygroup
pts mem u987654:mygroup
zeigt die in der Gruppe u987654:mygroup eingetragenen Benutzernummern an:
Members of u987654:mygroup (id: -219) are: a123456 u987601
Gruppen-ids sind bei AFS immer negativ.
fs sa . u987654:mygroup rl
trägt für die Mitglieder der Gruppe u987654:mygroup das Recht ein, das aktuelle Directory und die darin enthaltenen Dateien einzusehen. (Das "owner-r-Bit" muß für die jeweiligen Dateien gesetzt sein.) Der Zugriff auf Subdirec- tories in diesem Directory ist von deren ACLs abhängig, da das Lookup-Recht gesetzt ist.
fs la .
zeigt die ACL des aktuellen Diretories an:
Access list for . is Normal rights: u987654:mygroup rl system:administrators rlidwka u987654 rlidwka

Hinweise, Tips, Verschiedenes

Da nur mehr ein gemeinsames Homeverzeichnis für unterschiedliche Rechner verwendet wird, sollten plattformspezifische Files (Binaries!) in getrennten Directories gehalten werden (z.B. bin/).

Will ein Benutzer der Gruppe "system:anyuser" nur das Recht "lookup" geben, so hat er das Problem, daß Dateien, die sich im Homedirectory befinden müssen (etwa ".rhosts" oder ".forward") nicht mehr öffentlich zugreifbar sind - d.h. auch von den Systemdiensten nicht, die diese Files lesen sollen.

Die Lösung sieht so aus:

mkdir pub Einrichten eines Subdirectories, z.B. pub
fs sa pub system:anyuser rl Setzen der Leserechte für dieses Directory
ln -s pub/.rhosts .rhosts Einrichten eines Links auf die Datei .rhosts im Subdirectory pub
fs sa . system:anyuser l Setzen des Zugriffsrechts lookup für das Home-Directory

Wer einen ".forward"-File verwendet, sollte diesen in der beschriebenen Weise öffentlich lesbar machen, da der Mail-Dienst den Forward-File sonst nicht lesen (und somit auch nicht befolgen) kann. Gleiches gilt fuer den .rhosts-File.