Benutzung von AFS
In dieser FAQ sind eine Reihe von AFS-Kommandos angegeben. Woher weiß ich, welche Kommandos es überhaupt gibt und wie erfahre ich, wie sie zu benutzen sind?
Eine vollständige Liste aller Kommandos ist im
Reference Manual zu finden.
Die meisten AFS-Kommandos "verstehen" das Subkommando
help. Damit erhalten Sie eine Liste der Subkommandos und einen Überblick über die jeweilige Funktionalität.
Beispiel:
% pts help
pts help
pts: Commands are:
adduser add a user to a group
apropos search by help text
chown change ownership of a group
creategroup create a new group
createuser create a new user
delete delete a user or group from database
examine examine an entry
help get help on commands
listentries list users/groups in the protection database
listmax list max id
listowned list groups owned by an entry or zero id gets orphaned groups
membership list membership of a user or group
removeuser remove a user from a group
rename rename user or group
setfields set fields for an entry
setmax set max id
%
Zu jedem Subkommando kann man dann wiederum die Option
-help angeben, um die genaue Syntax zu erfahren.
Beipsiel:
% pts creategroup -help
Usage: pts creategroup -name + [-owner ] [-id +] [-cell | ] [-noauth] [-force] [-help]
%
|
Gibt es außer den Kommandos auch andere Werkzeuge, um die die hier beschriebenen Aktionen auszuführen?
Der
Web File Managers enthält die meisten der hier beschriebenen Funktionen. Darüber hinaus können Sie AFS-Gruppen mit einer speziellen Web-Schnittelle
Verwaltung von AFS-Gruppen verwalten.

OpenAFS für Windows führt ein Kontext-Menü in den Explorer ein (rechte Maustaste -> AFS), damit lassen sich ebenfalls zahlreiche Aktionen für Files im AFS ausführen.
Können beliebige Zeichen (also auch Umlaute, Sonderzeichen oder ähnliche) in Datei- oder Verzeichnisnamen verwendet werden?
Die Zeichen eines Dateinamens werden nach einer bestimmten Vorschrift kodiert.
Dabei haben das Betriebssystem, das Filesystem und ggf. sogar das Anwendungsprogramm, mit dem die Datei
erzeugt wird, Einfluss auf die Art der Kodierung.
Für die Zeichen des
ASCII-Zeichensatzes
(dazu gehören die 26 Buchstaben des
lateinischen Alphabets
- jeweils als Groß- und Kleinbuchstabe
- die Ziffern, sowie einige Sonderzeichen z.B. der Unterstrich, das Minus, das
Leerzeichen u.a.) ist die Kodierung in allen üblichen Kodierungsvorschriften
gleich.
Wenn Sie also nur ASCII-Zeichen für Dateinamen benutzen,
werden Sie in allen Umgebungen problemlos auf Ihre Dateien zugreifen können.
Seit OpenAFS for Windows 1.5.50 wird auch dort der Standard
UTF-8 für die Kodierung von Dateinamen benutzt, so dass Dateinamen mit Umlauten o.ä. Zeichen keine Probleme mehr darstellen.
Trotzdem sollten Sie beachten: Sonderzeichen (z.B. das Leerzeichen, der Punkt usw.) besitzen oftmals eine
Sonderbedeutung und sollten deshalb - obwohl sie zum ASCII-Zeichensatz gehören
- nicht in Dateinnamen verwendet werden.
Was sind AFS-Gruppen?
Eine AFS-Gruppe ist eine Liste von AFS-Nutzern. AFS-Gruppen haben Namen, die gewöhnlich so aussehen:
owner:group
wobei
owner das Login-Kennzeichen des Eigentümers der Gruppe und
group ein frei wählbarer Name ist. Standardmäßig ist nur der Eigentümer der Gruppe berechtigt, die Mitglieder der Gruppe zu definieren. AFS-Gruppen werden für die Vergabe von Zugriffsberechtigungen verwendet.
Jeder AFS-Nutzer kann standardmäßig bis zu 20 eigene AFS-Gruppen verwalten.
Wie lege ich eine AFS-Gruppe an?
Zum Erzeugen einer Gruppe dient das Kommando
pts creategroup. Nachdem die Gruppe erzeugt wurde, können Sie mit
pts adduser
Nutzer in die Gruppe aufnehmen und später ggf. mit
pts removeuser wieder aus der Gruppe streichen.
Beispiel:
% pts creategroup otto:friends
group otto:friends has id -283
% pts adduser -user otilie max -group otto:friends
Wer ist Mitglied meiner Gruppen und ich welchen Gruppen bin ich selbst Mitglied?
Mit dem Kommando
pts membership können Sie ermittlen, wer zu einer Gruppe gehört bzw. zu welchen Gruppen Sie selbst gehören:
Beispiel:
% pts membership otto:friends
Members of otto:friends (id: -283) are:
otilie
max
% pts membership otto
Groups otto (id: 1234) is a member of:
max:friends
otilie:freunde
%
Welche AFS-Gruppen gibt es standardmäßig?
In jeder AFS-Zelle gibt es die folgenden Gruppen
- system:anyuser
- Jeder Nutzer, der Zugang zu einem AFS-Klient hat in jeder Zelle. Mit dem Plazieren dieser Gruppe in einer ACL erreichen Sie quasi anonymen Zugriff zu den betreffenden Files, einzige Voraussetzung ist der Zugang zu einem AFS-Klient.
- system:authuser
- Jeder Nutzer, der Zugang zu einem AFS-Klient hat und sich ein Token für die eigene Zelle verschafft hat. Mit dem Plazieren dieser Gruppe in einer ACL erreichen Sie quasi anonymen Zugriff, der jedoch eingeschränkt auf die Nutzer in der eigenen Zelle ist.
- system:administrators
- Nutzer mit speziellen Privilegien für das Ausführen bestimmter (aber nicht aller) administrativen Kommandos.
- system:ptsviewers
- Nutzer mit dem Privileg, alle Einträge in der AFS-Gruppen-Datenbasis (Protection Database) einzusehen.
Neben diesen Standard-Gruppen gibt es in unserer Zelle einige weitere Gruppen, die eine bestimmte Bedeutung besitzen:
- chemnitz
- Jeder Nutzer, der Zugang zu einem AFS-Klient hat an einer Maschine mit einer IP-Adresse aus unserem Campusnetz. Mit dem Plazieren dieser Gruppe in einer ACL erreichen Sie quasi anonymen Zugriff zu den betreffenden Files, einzige Voraussetzung ist der Zugang zu einem AFS-Klient auf einer Maschine in unserem Campusnetz.
- urz:www-user
- Jeder Nutzer, der Programme auf den WWW-User-Servern der Universität ausführen kann. Siehe auch Zugriffsschutz auf WWW-Dokumente im AFS-Dateisystem.
Was ist eine ACL?
ACL steht für
Access Control List. Im AFS gibt es für jedes Verzeichnis eine ACL. Darin sind die Zugriffsberechtigungen zu den Files des Verzeichnisses beschrieben. ACLs beschreiben also immer die Zugriffsberechtigungen auf Verzeichnisebene und nicht auf Fileebene. Eine ACL besteht aus maximal 20 Einträgen, wobei ein Eintrag die Rechte eines Nutzers oder einer Gruppe angibt.
Eine ACL wird angezeigt mit dem Kommando
fs listacl.
Beispiel:
% fs listacl ~/PUBLIC
fs listacl ~/PUBLIC
Access list for /afs/tu-chemnitz.de/home/urz/o/otto/PUBLIC is
Normal rights:
system:anyuser rl
otto rlidwka
%
Diese ACL gibt an, dass der Nutzer
otto alle Zugriffsrechte (
rlidwka) für das Verzeichnis
~/PUBLIC besitzt, während alle anderen Nutzer (
system:anyuser), Files in diesem Verzeichnis nur lesen (
rl) können.
Welche AFS-Zugriffsrechte gibt es?
Im AFS gibt es sieben verschiedene Zugriffsrechte. Wenn eines der Rechte in einem Eintrag der ACL angegeben ist, bedeutet das, daß dem im Eintrag angegebenen Nutzer bzw. der angegebenen Gruppe dieses Recht gewährt wird.
| lookup |
l |
anzeigen der ACL, absteigen in das Verzeichnis, anzeigen von Filenamen im Verzeichnis |
| read |
r |
lesen der Files im Verzeichnis (anzeigen der Fileinhalte) |
| insert |
i |
erzeugen neuer Files oder Unterverzeichnisse im Verzeichnis |
| write |
w |
modifizieren von Files (schreiben im Sinne von fortschreiben/überschreiben von Fileinhalten) |
| delete |
d |
löschen von Files oder Unterverzeichnissen im Verzeichnis |
| lock |
k |
erlauben von Filelocking-Operationen mit flock(2) |
| administer |
a |
ändern der ACL |
Die ACL's werden mit dem Kommando
fs setacl verändert. Dieses Kommando kennt folgende Kürzel für häufig verwendete Kombinationen von Zugriffsrechten.
read |
read und lookup |
write |
alle Rechte außer administer |
all |
alle Rechte |
none |
entfernt den Eintrag aus der ACL |
Beispiel:
% fs setacl -dir ~/aufgaben -acl max:friends none otto:friends write
%
Wer darf die ACL eines Verzeichnisses ändern?
Es gibt mehrere Bedingungen unter denen die Änderung der ACL eines Verzeichnisses möglich ist:
- Ein Nutzer selbst oder eine Gruppe, deren Mitglied er ist, hat laut ACL des Verzeichnisses das Recht
a.
- Der Nutzer ist UNIX-Eigentümer des Verzeichnisses (wie beim Kommando
ls -ld angezeigt).
- Der Nutzer oder eine Gruppe, deren Mitglied er ist, ist als Eigentümer des AFS-Volumes eingetragen (UNIX-Eigentümer des Wurzelverzeichnisses eines Volumes).
Welche Bedeutung haben die UNIX-Zugriffsrechte?
Die UNIX-Zugriffsrechte für
group und
others werden von AFS ignoriert, sie haben keine Bedeutung. Die Rechte des Eigentümers (
owner) werden wie folgt interpretiert:
r |
das File/Verzeichnis ist lesbar für jeden Nutzer, der laut ACL die entsprechenden Rechte hat |
w |
das File/Verzeichnis ist modifizierbar für jeden, der laut ACL die entsprechenden Rechte hat |
x |
das File ist ausführbar/das Verzeichnis ist durchsuchbar, für jeden Nutzer, der laut ACL die entsprechenden Rechte hat |
Welche Rechte erhalten neu eingerichtete Verzeichnisse?
Wenn Sie ein neues Verzeichnis einrichten, Archive auspacken oder ähnliche Aktionen durchführen, bei denen Verzeichnisse entstehen, werden automatisch die ACL-Einträge des übergeordneten Verzeichnisses übernommen.
Sie müssen also beachten, wenn Sie die ACL Ihres HOME-Verzeichnisses verändern, daß die so geänderte ACL dann auf jedes anschließend erzeugte Verzeichnis in Ihrem HOME-Verzeichnis übernommen wird.
Haben die im UNIX üblichen setuid/setgid-Bits im AFS noch eine Bedeutung und macht ihre Vergabe Sinn?
Die Bedeutung dieser Bits wurde nicht geändert, ob sie eine Wirkung haben, kann man mit dem Kommando
fs setcell festlegen, standardmäßig werden diese Bits bei Files aus der eigenen Zelle ausgewertet und bei fremden Zellen ignoriert.
Die Zugriffsschutzmechanismen des AFS machen die Verwendung dieser Bits für die meisten Fälle obsolet. Im UNIX werden die Bits benutzt, um bestimmte Zugriffsprivilegien an den Aufrufer des Programms zu vermitteln. Im AFS ist das in den allermeisten Fällen nicht nötig, weil die ACL's ohnehin sehr fein eingestellte Zugriffsrechte ermöglichen.
Ich bin als root an meiner Unix-/Linux-Maschine angemeldet, kann aber trotzdem das Kommando chown für Files im AFS nicht ausführen. Woran liegt das?
Der Nutzer
root hat im AFS keinerlei Privilegien. Zwar erfordern die meisten Unix-Systeme die Privilegien von
root für das Ausführen von
chown, im AFS reicht das aber nicht aus.
Diese Einschränkung ist notwendig, weil sonst das Erlangen von
root Privilegien auf einer AFS-Klient-Maschine in einer Zelle ausreichen würde, um auf allen AFS-Klient-Maschinen der Zelle
root Privilegien zu erlangen.
Dazu müsste man nur ein Programm ins AFS kopieren und anschließend mit
chown und
chmod für dieses Fiile
root als Eigentümer eintragen und das Setuid-Bit setzen. Anschließend könnte man dieses Programm auf allen Maschinen der AFS-Zelle mit
root Privilegien ausführen.
Damit so etwas nicht möglich ist, ist die Operation
chown im AFS nur den Mitgliedern der Gruppe
system:administrators erlaubt.
Wie ändere ich die AFS-Zugriffsrechte in einem gesamten Verzeichnisbaum?
Mit dem Kommando
fs setacl lassen sich nur die Rechte der Verzeichnisse ändern, die mit der Option
-dir angegeben wurden. Möchte man die Rechte in einem gesamten Verzeichnisbaum ändern, so reicht das nicht aus. Das Kommando
chacl ist ein Script, welches das Kommando
fs setacl rekursiv für einen (oder mehrere) Verzeichnisbäume aufrufen kann. Dazu muß beim Aufruf von
chacl die Option
-R angegeben werden. Die anderen Optionen entsprechen denen des Kommandos
fs setacl.
Beispiel:
% chacl -R -dir ~/aufgaben -acl max:friends read system:anyuser none
%
Hinweis: Unter dem Namen
chacl gibt es in einigen Umgebungen auch ein anderes Kommando - mit einer anderen Syntax und Semantik. Auf Maschinen im URZ ist das hier beschriebene Kommando zu finden als
/usr/local/bin/chacl.
Wie setze ich die Zugriffsrechte für ein einzelnes File?
Prinzipiell gestattet AFS das Definieren von ACL's nur für Verzeichnisse. Möchte man für ein einzelnes File jedoch andere Zugriffsrechte festlegen, so muß man dieses File in einem anderen Verzeichnis unterbringen (für das man dann die Rechte entsprechend setzen kann) und anschließend einen symbolischen Link auf dieses File im neuen Verzeichnis setzen.