AFS bei DESY

Einführung in AFS

Das Acronym AFS steht für Andrew File System und wurde an der Carnegie Mellon Universität entwickelt. Es ist ein Netzwerk-Filesystem und wird bei DESY mit Hilfe des OpenAFS Clients auf fast allen Rechnern (auch Windows) eingesetzt. Dieses Dateisystem ist besonders geeignet zur Lösung des Problems der multiplen Home-Verzeichnisse: Benutzer, die auf unterschiedlichen Linux PCs arbeiten haben durch das AFS auf jedem dieser Geräte dasselbe (AFS-)Home-Verzeichnis, sofern eine Verbindung zum AFS besteht. Mit Hilfe des AFS sieht ein Benutzer unter Linux stets dasselbe Homeverzeichnis, unabhängig vom benutzten Computer. Auch mit Windows können Sie Ihr AFS Homeverzeichnis einsehen und Daten lesen und schreiben. Rechner, auf denen eine AFS-Client-Software installiert ist, werden auch AFS-Clients genannt.

Das AFS hat eine Baumstruktur, so wie das normale Unix-Filesystem. Aber im Unterschied dazu liegen die Dateien, die Sie ins AFS schreiben, nicht auf Ihrem Arbeitsrechner, sondern auf einem der bei DESY zentral bereitgestellten AFS Server. Die Dateien sind vom Wurzelverzeichnis ausgehend angesiedelt in /afs/{zellenname}/ (DESYs Zellenname ist desy.de). Eine AFS-Zelle ist ein administrativer Bereich (z.B. DESY) und besteht aus einer Vielzahl von Servern und Clients. Ein Beispiel für einen Dateinamen bei DESY könnte /afs/desy.de/user/t/testbenutzer/bin/beispiel sein.

AFS umfasst

  • Fileserver für AFS-Home-Verzeichnisse und Anwendungsprogramme. Beides wird von DESY/IT gepflegt. Die Anwendungen, die AFS nutzen, können ohne Token nur von der DESY-AFS-Zelle aus ausgeführt werden.
  • Skalierbarkeit: Anwendungsprogramme können leicht auf mehreren Servern repliziert werden, sodass die Last verteilt und der Dienst auch bei Ausfall eines Server weiterhin angeboten wird.
  • ein lokales AFS-Cache auf jedem beteiligten Host-Rechner, welches lokale Kopien der auf diesem Host benutzten Datein bereitstellt.
  • verschiedene andere Dienste, z.B. einen Kerberos-Authentifizierungsdienst für verbesserte Sicherheit.


Aus Sicht der Benutzer ist das AFS-System auf allen beteiligten Hosts identisch. Der lokale Cache gibt es nur aus Gründen der Effektivität. Es ist für die Benutzer völlig transparent: Sie sehen dasselbe AFS-Home-Verzeichnis auf allen AFS-Clients.

Sicherungskopien aller Datein in den Home-Verzeichnissen der Benutzer werden regelmäßig automatisch erstellt. Das Werkzeug hierfür ist der TSM. TSM liest die Datein mit den Systemadministrator-Zugriffsrechten, sodass nur von denjenigen Datein Sicherungskopien erzeugt werden, welche der Systemadministrator lesen darf. Aus diesem Grund sollten die Zugriffslisten (ACLs, siehe unten) nicht so eingerichtet sein, dass sie den Systemadministrator ausschließen.

Neben ihrem AFS-Heimatverzeichnis finden die Benutzer auch noch ein normales Unix-Filesystem vor, z.B. ein /tmp-Verzeichnis. Das hängt vom Rechner ab.

Zugriffskontrolle unter AFS

Obwohl AFS dem normalen Unix-Filesystem sehr ähnlich sieht, gibt es doch einige wichtige Unterschiede für Benutzerinnen, die vom normalen Unix-Filesystem nach AFS überwechseln:

Zugriffsrechte

Ein wesentlicher Unterschied besteht in den Zugriffsrechten. Diese werden im AFS mit Zugriffskontrolllisten (Access Control Lists, ACLs) auf Verzeichnisebene vergeben. Obwohl die Zugriffsrechte des Unix-Filesystems noch angezeigt werden, setzen die ACLs sie außer Kraft. Lediglich die User-Rechte bleiben wirksam, allerdings modifiziert. Deshalb ist Vorsicht angesagt! Einige Details folgen unten, unter Zugriffskontrolllisten

Authentifizierung, Token

Um die AFS-Dienste benutzen zu können, muss ein Benutzer sich ausweisen. Das geschieht normalerweise beim Anmelden (login) durch das Angeben des mit mit dem Benutzernamen verknüpften Kennwortes. Der Benutzer erhält daraufhin ein Token, das ihm den Zugriff auf seine Datein erlaubt. Es hat eine begrenzte Laufzeit von üblicherweise 25 Stunden. Token werden jeweils für eine Zelle und eine Benutzerin vergeben.

Wenn ein Token abläuft, kann man mit dem Kommando klog ein neues besorgen. Wenn die Benutzerin sich abmeldet (logout), wird das Token zerstört. Bei der nächsten Anmeldung wird automatisch ein neues erzeugt.

Wenn in einer Sitzung ein Batchjob vorgelegt wird, erhält der eine Kopie des Tokens der Sitzung. Diese Kopie hat dieselbe verbleibende Laufzeit wie das Original. Sie überlebt, wenn die Sitzung endet.

Anmeldung

Auf den meisten Unix-Maschinen bei DESY versucht die Anmeldeprozedur zuerst, die Benutzer für AFS zu authentifizieren. Erst wenn dies misslingt, fährt sie mit einer Nicht-AFS-Anmeldung fort, welche, je nach Einrichtung der Maschine, auf DCE (Distributed Computing Environment), NIS (Netzwerk-Informations-System) oder lokal versucht wird. In diesem Falle wird eine Warnmeldung erzeugt, welche von Nicht-AFS-Benutzern gefahrlos ignoriert werden kann.

Man braucht das AFS-Kennwort nicht mit einem besonderen Kommando zu setzen: Das Kommando passwd wurde derart modifiziert, dass es das korrekt leistet. Allerdings sollte es das richtige Kennwortprogramm sein: /usr/sue/bin/passwd . Durch Änderungen am PATH kann man leicht an ein anderes Kennwortprogramm geraten, ein häufig vorkommender Fehler. Man kann das mit which passwd prüfen, bei Benutzung der 'bash' muss man aber trotz scheinbar richtigem Programm-Pfad zum Passwortwechsel unbedingt den ganzen Pfad '/usr/sue/bin/passwd' eingeben.

Standard-Zugriffsrechte bei DESY
top

Wenn ein neuer Account für eine neuen Benutzer erzeugt wird, werden die Zugriffsrechte für ihr Heimatverzeichnis folgendermaßen gesetzt (die Erläuterung für Gruppen mit bestimmten Zugriffsrechten und die möglichen Zugriffsrechte folgt weiter unten):

l (lookup) für system:anyuser und desy-hosts
rlidwka (administer) für die Benutzerin und system:administrators


Einige besondere Verzeichnisse und Dateien

Jedes neue Heimatverzeichnis enthält einige Unterverzeichnisse:

  • Eines mit dem Namen der Gruppe, z.B. h1, zeus etc. Dieses hat Leserecht (rl-Attribut) für die Gruppe und kein Zugriffsrecht für alle anderen Benutzer (außer natürlich system:administrators).
  • Drei mit den Namen private, Mail, und mail. Diese haben kein Zugriffsrecht für "any users" (wiederum: außer für system:administrators). Mail und mail sind äquivalent. Manche Email-Programme benutzen Mail, andere mail.
  • Eines mit dem Namen public, welches Leserecht für alle Benutzer hat, also für die Gruppe system:anyuser, sowie system:administrators.
  • Eines mit dem Namen .OldFiles, in welchem der Zustand des Home-Verzeichnisses in jeder Nacht festgehalten wird.


Die Dateien in .OldFiles belegen keinen Platz im Plattenplatzkontingent (Quota) des Benutzers.
Wie funktioniert .OldFiles? In jeder Nacht werden die Daten des Home-Verzeichnisses in .OldFiles gesichert. .OldFiles stellt damit dem User den Zustand der Daten, wie sie in der Nacht waren, da. Daten, die im Home-Verzeichniss gelöscht wurden sind noch bis zum nächsten Tag in .OldFiles vorhanden. Änderungen, die im Home-Verzeichniss gemacht werden werden erst in der nächsten Nacht in .OldFiles übertragen.

Jeder Benutzer kann persönliche ACLs nach Belieben erzeugen und ändern, jedoch gibt es einige Dateien, deren Zugriffsrechte wohl bedacht sein sollten:

.netrc Falls diese Datei überhaupt existiert, wird es Passwörter enthalten. Konsequenterweise sollte es daher nicht jedermann lesen können. Aus diesem Grunde sollte es in der obersten Ebene des Home-Verzeichnisses liegen, und dieses sollte der Allgemeinheit verschlossen sein.
.rhosts und andere "Punkt-Datein" Solche Dateien enthalten Informationen, um die individuellen Arbeitsmethoden einzustellen. Sie sollten deshalb der Allgemeinheit keinen Schreib-Zugriff gewähren. Aus diesem Grund sind auch sie sinnvollerweise in der obersten Ebene des Home-Verzeichnisses untergebracht.

Sicherheitskopien der AFS-Dateien

In jeder Nacht wird der Zustand des Heimatverzeichnisses einer jeden AFS-Benutzerin in dem besonderen Verzeichnis .OldFiles festgehalten. Dort sucht man daher nach Kopien von im Laufe des Tages verlorengegangenen Dateien.

Darüberhinaus erzeugt der TSM inkrementelle Sicherungskopien, d.h. solche von veränderten Dateien. Um das tun zu können, muss der System-Administrator berechtigt sein, die Datein zu lesen. Dieses ist zu bedenken, wenn man den Zugriff mit ACLs einschränkt.

Die AFS-Kommandos

Es folgt eine kurze Beschreibung der AFS-Kommandos. Text in spitzen Klammern zeigt solche Informationen an, die der Benutzer eingeben muss. Die Symbole < und > sind also nicht zu schreiben. Text in eckigen Klammern zeigt fakultative Angaben an, daher sind die Symbole [ und ] ebenfalls nicht zu schreiben. Manchmal können solche fakultativen Angaben mehrfach spezifiziert werden. Das wird durch ein + neben dem > oder ] angedeutet.

Allgemeine Kommandos

Kennwortänderung auf den zentral verwalteten Rechnern bei DESY

passwd 

Setzt ein neues DESY Passwort (Pfad: /usr/sue/bin/passwd)
Prüfen, beschaffen und Löschen des AFS Tokens

tokens 

Prüft, welche Token der Benutzer hat sowie deren Laufzeit. Nach Ablauf der Laufzeit eines Tokens ist der Zugang zu AFS nicht mehr möglich, man kann also beispielsweise die geänderten Datein nicht mehr zurückschreiben.

klog 

Beschaffung eines neuen Tokens. Dies ist während einer langen Sitzung nützlich, oder wenn ein existierendes Token kurz vor dem Ablauf steht.

unlog

Löschung eines Tokens
AFS Quota des Benutzers anzeigen

fs listquota

Kurz: fs lq

Zeigt den aktuellen Stand der Quota-Auslastung des AFS Benutzerverzeichnisses.

Informationen über den Fileserver anzeigen

fs whereis

Ort eines File-Systems anzeigen
fs whereis [path]

fs checkservers

Prüft die Server der lokalen AFS Zelle

 
Erneuerung flüchtiger Hauptspeicherinhalte

fs flush 

Als mögliche Reaktion auf einen Fehler im flüchtigen Hauptspeicher veranlasst dieses Kommando den Client, eine Datei in seinem Cache zu erneuern.
fs flush [file path]

fs flushvolume 

Falls ein Anwendungsprogramm nicht normal läuft, veranlasst dieses Kommando den Server, alle Datein in seinem Cache zu erneuern.
fs flushvolume [path]


Zugriffskontrolllisten

Wie schon oben erwähnt, behandelt AFS die Zugriffsrechte des Unix-Filesystems anders als Unix: Die User-Rechte (rwx) bleiben wirksam, und zwar für jeden, der aufgrund von ACLs Zugang zu dem Datein hat. Anders gesagt: Der Benutzer hat Zugriff, wenn dies nicht durch eine ACL verhindert wird und wenn die User-Rechte gesetzt sind. AFS ignoriert die Unix-Rechte für die Gruppe und die Welt und regelt den Zugang mit ACLs:

Die Zugriffslisten (Access Control Lists, ACLs) von AFS arbeiten auf Verzeichnisbasis. Alle Datein in einem Verzeichnis unterliegen denselben Zugriffsbedingungen. Die Benutzer müssen ihre Datein entsprechend den gewünschten Zugriffsbedingungen eingruppieren.

Wenn ein Verzeichnis in eine ACL eingetragen wird, so betrifft das nur dieses Verzeichnis, nicht seine bereits existierenden Unterverzeichnisse. Wird jedoch in einem Verzeichnis ein neues Unterverzeichnis angelegt, so erbt dieses die ACL-Einträge des Mutterverzeichnisses.
Will man rekursiv alle Unterverzeichnisse eines Verzeichnisses mit denselben Zugriffsrechten versehen, so empfiehlt sich die Benutzung des mächtigen Unix-Kommandos find, welches für alle gefundenen Unterverzeichnisse z.B. das Kommando fs setacl -dir ... ausführen kann. fs setaclwird weiter unten beschrieben, zu find siehe man find.
Alternativ kann man fs copyacl -fromdir -todir(Erklärung weiter unten) benutzen, allerdings nicht rekursiv.

ACLs werden mit Hilfe von ACL-Einträgen gesetzt. Ein solcher Eintrag besteht aus dem Namen einer Benutzergruppe und den Zugriffsrechten, getrennt durch ein Leerzeichen, z.B. testuser rlidw .

Die Benutzerin kann (bis zu 20) Gruppen mit bestimmten Zugriffsrechten selbst definieren. Gruppennamen haben die Form besitzerin:name. Es gibt bei DESY einige vordefinierte Gruppen, welche alle der Gruppe usg gehören.
Beispiele: usg:h1, usg:zeus und viele mehr.

Weitere vordefinierte Gruppen sind:

system:anyuser alle AFS-Benutzer und Benutzerinnen in der Welt
system:authuser alle authorisierten Benutzer und Benutzerinnen (also solche mit einem AFS-Token) in der AFS-Zelle desy.de, nicht notwendig gerade bei DESY angemeldet
desy-hosts alle Benutzer, welche mit IP-Addresses von DESY Hamburg oder DESY Zeuthen angemeldet (logged in) sind, nicht unbedingt authorisiert

Mögliche Zugriffsrechte

l lookup Auflisten der Datein in einem Verzeichnis
r read Lesen einer Datei
i insert Erzeugen neuer Datein oder Verzeichnisse
w write Schreiben in ein von Datein
d delete Löschen von Datein oder Verzeichnissen
k lock Datein locken
a administer ACLs ändern


Abkürzungen

all alle oben genannten Rechte
none keines der oben genannten Rechte
read rl -Rechte
write alle Rechte außer a


ACL-Kommandos

  • Benutzung von Zugriffslisten zum Schutz von Datein und Verzeichnissen

    fs listacl

    kurz: fs la

    zeigt die ACL für ein angegebenes Verzeichnis an. Falls kein Verzeichnis angegeben wurde, wird das aktuelle Verzeichnis (working directory) angezeigt.

    Anwendung: fs listacl []

    fs setacl

    kurz: fs sa

    setzt die ACL für ein angegebenes Verzeichnis

    Anwendung: fs setacl -dir -acl

    Beispiel: fs setacl -dir private -acl system:anyuser none
    Kein Zugriffsrecht zum Verzeichnis 'private' für die Mitglieder der Gruppe system:anyuser

    fs copyacl

    kurz: fs ca

    kopiert eine Zugriffsliste

    Anwendung: fs copyacl -fromdir
    -todir + [-clear ] [-id ] [-if ] [-help ]

    Manipulation von Gruppen mit Zugriffsrechten

    pts creategroup

    kurz: pts cg

    erzeugt eine (von bis zu 20) dem Benutzer gehörende Gruppe. Benutzer können die IDs anderer Benutzer, aber auch Maschinennamen, in ihre Zugriffsgruppen aufnehmen. Danach können sie diesen Zugriffsgruppen Zugriffsrechte auf ausgewählte Verzeichnisse geben.

    Anwendung: pts creategroup -name

    Beispiel: pts creategroup -name testbenutzer:freunde

    Die Benutzerin mit der ID 'testbenutzer' erzeugt eine Gruppe 'freunde', welche ihr dann gehört.

    pts adduser

    fügt einen Benutzer einer Gruppe hinzu

    Anwendung: pts adduser -user -group

    Beispiel: pts adduser -user heino -group testbenutzer:freunde

    Die Benutzerin 'testbenutzer' fügt den Benutzer 'heino' ihrer Gruppe 'freunde' hinzu.

    ptsremoveuser

    löscht einen Benutzer aus einer Gruppe

    Anwendung: pts removeuser -user -group

    Beispiel: pts removeuser -user heino -group testbenutzer:freunde

    Die Benutzerin 'testbenutzer' löscht den Benutzer 'heino' aus ihrer Gruppe 'freunde'.

    pts rename

    nicht kürzer:

    pts chname

    ändert den Namen eines Benutzers oder einer Gruppe.

    Anwendung: pts rename -oldname -newname [-cell ]
    [-noauth ] [-test ] [-force ] [-help ]

    Beispiel: pts rename -oldname testbenutzer:freunde -newname testbenutzer:feinde

    Die Benutzerin 'testbenutzer' ändert den Namen ihrer Gruppe 'freunde' in 'feinde'.

    pts delete

    löscht die benutzereigene Zugriffsgruppe

    Anwendung: pts delete -nameorid

    Beispiel: pts delete -nameorid testbenutzer:feinde

    Die Benutzerin 'testbenutzer' löscht ihre Gruppe 'feinde'.

    Information über Gruppen mit Zugriffsrechten anzeigen
    pts listowned

    zeigt die einem bestimmten Benutzer gehörenden Gruppen an. Dieses Kommando unterliegt gewissen Einschränkungen.

    Anwendung: pts listowned -nameorid

    pts membership

    kurz: ptsmember
    oder: pts m
    oder: ptsgroups

    zeigt die Mitglieder einer bestimmten Gruppe an oderalle Gruppen, denen der Benutzer angehört. Dieses Kommando unterliegt gewissen Einschränkungen.

    Anwendung: pts membership oderpts membership

    pts examine

    kurz: pts check

    gibt Auskunft über eine Gruppe oder einen Benutzer. Dieses Kommando unterliegt gewissen Einschränkungen.

    Anwendung: pts examine -nameorid + [-cell ] [-noauth ] [-test ] [-force ] [-help ]

    Man kann jederzeit durch eines der folgenden Kommandos Hilfe zu den ACL-Kommandos erhalten:

    • fs help
    • fs help
    • fs apropos
    • pts help
    • pts help
    • pts apropos

Zugriff auf AFS-Daten von Microsoft Windows aus

Wenn Sie den AFS-Client installieren (Start -> NetinstallPrograms -> Netinstall -> Installer -> Folder Communication), können Sie mit dessen Hilfe AFS-Pfade durch Laufwerke, die dann im Windows Explorer erscheinen, darstellen (drive letters -> add). Dadurch sind AFS-Verzeichnisse und deren Datein nicht nur unter Microsoft Windows veränderbar, sondern auch plattformübergreifend transportierbar.

Achtung: Für den Zugriff auf AFS-Daten benötigen Sie ein Token. Es wird beim Einloggen automatisch erhalten, wenn Sie ein identisches Unix/MIcrosoft Windows-Passwort verwenden. Tun Sie das aus Sicherheitsgründen nicht, erscheint eventuell die Meldung 'Integrated login failed'. Dann müssen Sie sich durch Wahl des Schloss-Symbols in der Taskleiste, dann Klick auf 'Tokens' und danach auf 'Obtain new token' ein Token besorgen.

Wenn Sie lokaler Administrator sind, sollten Sie in dem Fall den AFS-Client umkonfigurieren, indem Sie auf der Registerkarte 'Advanced' das erste Häkchen bei 'Start the AFS Client...' entfernen. Dann erscheint am Ende eines Logins (nach Neustart) gleich ein Fenster, das Sie zum Erhalt eines Tokens führt, was sie dadurch nicht vergessen können. Die Meldung 'Integrated login failed' verhindern Sie, indem Sie 'Configure AFS Client -> Advanced -> Logon -> Fail Logins Silently' auf 'yes' umstellen.

DESY-Spezifische Informationen über das AFS

Auf der Seite "AFS File Service am DESY" gibt es weitere Informationen rund um die DESY-AFS-Zelle.

  Benutzung von Zugriffslisten zum Schutz von Datein und Verzeichnissen

fs listacl

Kurz: fs la

zeigt die ACL für ein angegebenes Verzeichnis an. Falls kein Verzeichnis angegeben wurde, wird das aktuelle Verzeichnis (working directory) angezeigt.

Anwendung: fs listacl []

fs setacl

Kurz: fs sa

Setzt die ACL für ein angegebenes Verzeichnis

Anwendung: fs setacl -dir -acl

fs copyacl Kurz: fs ca Kopiert eine Zugriffsliste

Anwendung: fs copyacl -fromdir [path to dir] -todir [path to dir]

Manipulation von Gruppen mit Zugriffsrechten 

pts creategroup

Kurz: pts cg

Erzeugt eine (von bis zu 20) dem Benutzer gehörende Gruppe. Benutzer können die IDs anderer Benutzer, aber auch Maschinennamen, in ihre Zugriffsgruppen aufnehmen. Danach können sie diesen Zugriffsgruppen Zugriffsrechte auf ausgewählte Verzeichnisse geben. Anwendung: pts creategroup -name [group name]
pts adduser   Fügt einen Benutzer einer Gruppe hinzu Anwendung: pts adduser -user [username] -group [group name]
pts removeuser   Löscht einen Benutzer aus einer Gruppe Anwendung: pts removeuser -user -group
pts rename   Ändert den Namen eines Benutzers oder einer Gruppe. Anwendung: pts rename -oldname -newname