Studieren in Chemnitz. Wissen, was gut ist.







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:

  1. Ein Nutzer selbst oder eine Gruppe, deren Mitglied er ist, hat laut ACL des Verzeichnisses das Recht a.
  2. Der Nutzer ist UNIX-Eigentümer des Verzeichnisses (wie beim Kommando ls -ld angezeigt).
  3. 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.