ALIs
kommt nochDas 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:
Partition gibt die Auslastung des Plattenbereichs an, in dem das eigene Home-Directory (=Volume in AFS-Terminologie) liegt.Volume Name Quota Used % Used Partition user.u987654 10000 2465 25% 49% - fs q
- gibt die prozentuale Auslastung des eigenen Quotas an:
25% of quota used. - fs la .
- zeigt die ACL des aktuellen Diretories an:
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.Access list for . is Normal rights: system:anyuser rl u987654 rlidwka - 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:
Gruppen-ids sind bei AFS immer negativ.Members of u987654:mygroup (id: -219) are: a123456 u987601 - 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:
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.
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