EDV:OpenAFS

From KIP Wiki
⧼kip-jumptonavigation⧽⧼kip-jumptosearch⧽

OpenAFS am KIP


General


Was ist (Open)AFS?

AFS ist ein sicheres, verteiltes Dateisystem, welches an der Carnegie Mellon Universität entwickelt wurde. Danach wurde es von der Transarc Corporation, die mittlerweile von IBM übernommen wurde, vermarktet.

IBM ermöglichte dann eine parallele Weiterentwicklung als w:de:Open Source (http://www.openafs.org).


Warum (Open)AFS?

Es gibt mehrer Vorteile von AFS (ohne Anspruch auf Vollständigkeit):

  • Die Daten können transparent über mehrere Server verteilt werden.
  • Jeder kann auf das AFS mit einem Client zugreifen.
  • Es gibt w:de:Access Control Listen (ACL), welche eine bessere Rechteverwaltung ermöglichen.
  • w:de:Disk Quotas sind elementare Bestandteile von AFS.


Verwendung

Authentisieren

Um mit AFS arbeiten zu können muss man sich erst authentisieren (w:de:Authentisierung), da man sonst nur die Reche der Gruppe system:anyuser (also Anonymous) hat.

AFS arbeitet dabei mit Kerberos4-Token (w:de:Kerberos (Informatik)).


Arbeiten mit AFS-Kommandos

Die folgenden Kommondos sind alle bei (Open)AFS dabei und können ohne zusätzliches Kerberos verwendet werden.

Das tokens-Kommando ist Überprüfung ob ein solche Token existiert und wie lange es gültig ist:

userX@pcY:~$ tokens

Tokens held by the Cache Manager:

User's (AFS ID 1000) tokens for afs@kip.uni-heidelberg.de [Expires Feb 27 18:15]
   --End of list--

Zum erhalten eines Tokens oder es zu erneuern, wird klog verwendet:

userX@pcY:~$ klog userX

Die Gültigkeit eines solchen Tokens bezieht sich standardmäßig auf einen Nutzer auf einem Rechner bezieht, also in allen Shells (w:de:Betriebssystem-Shell, w:de:Unix-Shell). Um diese Gültikeit nur auf eine Shell zu beziehen, muss man diese mit kpagsh kapseln und danach erst das Token holen:

userX@pcY:~$ pagsh
userX@pcY:~$ klog userX

Zum zerstören des Tokens vor dem Ende seiner Laufzeit gibt es unlog:

userX@pcY:~$ unlog
userX@pcY:~$ tokens

Tokens held by the Cache Manager:

   --End of list--


Arbeiten mit Kerberos-Kommandos

Da wir ja Heimdal-Kerberos für die Authentisierung von AFS verwenden, können auch die Heimdal-Clients zur Authentisierung verwendet werden. Wenn OpenAFS gestartet ist wird dann, neben dem Kerberos-Ticket, auch automatisch ein AFS-Token geholt.

Zur Abfrage der Tickets wird klist verwendet. Mit der Option '-T' zeigt er auch gleich das AFS-Token an, falls vorhanden:

userX@pcY:~$ klist -T
Credentials cache: FILE:/tmp/krb5cc_1000
        Principal: userX@KIP.UNI-HEIDELBERG.DE

  Issued           Expires          Principal
Feb 27 16:25:00  Feb 28 02:24:59  krbtgt/KIP.UNI-HEIDELBERG.DE@KIP.UNI-HEIDELBERG.DE
Feb 27 16:25:00  Feb 28 02:24:59  afs@KIP.UNI-HEIDELBERG.DE

Feb 27 16:25:00  Feb 28 02:24:59  User's (AFS ID 1000) tokens for kip.uni-heidelberg.de

Um ein Ticket zu erhalten gibt es kinit. Das Token wird automatisch mit erzeugt:

userX@pcY:~$ kinit userX

Innerhalb der Güligkeit kann das Kerberos-Ticket auch verlängert werden, ohne das Passwort nochmal neu eingeben zu müssen:

userX@pcY:~$ kinit -R

Um seine Shell zu kapseln gibt es dann kpagsh:

userX@pcY:~$ kpagsh

Zum zerstören aller Tickets (und des Tokens) dient kdestroy:

userX@pcY:~$ kdestroy
userX@pcY:~$ klist -T
klist: No ticket file: /tmp/krb5cc_1000


Access Control Lists (ACLs)

Unterschied der AFS-ACLs zu Unix-Dateirechten

Im tyischen-Unix/Linux Dateisystem existieren nur die drei Klassen Eigentümer, Gruppe, Alle. Eine Datei hat dann genau einen Eigentümer und genau eine Gruppe. Nun können für jede Datei nun jeder dieser Klassen bestimmte Rechte gegeben werden. Zum Beispiel (Ausgabe von ls -l):

-rw-r--r-- 1 floh users 396811 2006-11-10 17:12 Neuenheimer_Feld_Plan.jpg

Zum einen ist eine feinere Rechteaufteilung implementiert (siehe Punkt EDV:OpenAFS#Rechte im AFS) und vor allem können beliebig viele Gruppen, Personen in einer ACL vorkommen. Zum Beispiel (Ausgabe von fs listacl):

Access list for /afs/kip/user/home1/sesselm is
Normal rights:
  s3 rl
  system:administrators rlidwka
  system:authuser l
  sesselm rlidwka
Leider können solche ACLs nur auf Verzeichnise angewendet werden.


Besondere Gruppen im AFS

Gruppe Wer gehört zu dieser Gruppe
system:anyusers Jeder (Anonym)
system:authusers Alle Nutzer, die sich (erfolgreich gegenüber dem AFS) authentisiert haben.
system:administrators Die Gruppe der Administratoren


Rechte im AFS

Es existieren sieben Zugriffsrechte im AFS:

Recht Langform Bedeutung
l Lookup Auflisten des Inhaltes des Verzeichnisses und Anzeige der ACL.
i Insert Dateien/Verzeichnisse in dem Verzeichnis einfügen/anlegen.
d Delete Dateien/Verzeuchnisse in dem Verzeichnis löschen.
a Administer Die ACL des Verzeichnisses ändern.
r Read Lesen von Dateien.
w Write Schreiben/Ändern von Dateien (Achtung.svg nicht neue Dateien anlegen)
k Lock Dateien dürfen mit flock gesperrt werden.

Damit man diese Rechte nicht immer alle einzeln angeben muss, gibt es diese sinnvollen kurzen Aliase:

Alias Ausführlich Bedeutung
write rlidwk Schreiben (alle außer Administer)
read rl Lesen und Lookup
all rlidwka Alle Rechte (auch a)
none Kein Recht, dient zum entfernen von Rechten

Rechte lesen und setzen

Mit fs listacl [Eintrag]+ erhält man die gültige ACL des Eintrages (Datei/Verzeichnis):

fs listacl *

Mit fs setacl kann eine ACL geändert werden (oder gleich meherere):

fs setacl -dir ./mydirectory -acl system:anyuser read
fs setacl -dir ./mydirectory ./mydir2 -acl system:anyuser none userX read groupY l

Um sich mit den Befehlen vertraut zu machen hilf fs help:

fs help
fs help listacl
fs help setacl


Nützliche Kommandos

Die Hilfeseiten der Kommandos sind meist schon sehr selbsterklärend und sollten deshalb auch verwendet werden:

fs help
fs help listquota
fs help listacl
pts help
pts help listentries

ACLs auflisten:

fs listacl /afs/kip/temp

ACL ändern:

fs setacl /afs/kip/temp system:administrator all

Quota auflisten:

fs quota /afs/kip/temp
fs listquota /afs/kip/temp

Volume zum Moutpoint rausfinden:

fs lsmount /afs/kip/temp

Eintrag im Cache des AFS-Clients löschen:

fs flush /afs/kip/temp

Auflisten aller Nutzer im AFS:

pts listentries

Auflisten aller Gruppen im AFS:

pts listentries -groups

Auflisten der Nutzer in einer AFS-Gruppe:

pts members users


Client-Installation (Zugang zum AFS)

Die CellServDB

In der CellServDB sollte für die KIP-Zelle folgender Eintrag drin stehen:

>kip.uni-heidelberg.de
129.206.176.40          # ldap.kip.uni-heidelberg.de
129.206.176.149         # ldap2.kip.uni-heidelberg.de

Diese Datei ist auch unter /afs/kip/common/etc/CellServDB zu erreichen.


Linux-Client

Hier am Beispiel von Debian mit einem 2.6.x Kernel.


Heimdal Kerberos (Client) installieren

Dies ist optional, kann aber unter Umständen einiges vereinfachen, da unser AFS ja auch auf Heimdal zurückgreift.

aptitude install heimdal-clients 

Die folgenden Fragen wie folgt beantworten:

Kerberos Realm KIP.UNI-HEIDELBERG.DE
Hesiod-Domain .kip.uni-heidelberg.de
Kerberos Server ldap.kip.uni-heidelberg.de ldap2.kip.uni-heidelberg.de
Admin Server von Kerberos ldap.kip.uni-heidelberg.de


OpenAFS installieren

Binaries installieren:

aptitude install openafs-client

Die folgenden Fragen wie folgt beantworten:

AFS-Zelle kip.uni-heidelberg.de
Größe des AFS-Cache (kb) 50000
/afs dynamisch ? Nein
Rechnernamen des Datenbank-Servers afsdb1.kip.uni-heidelberg.de afsdb2.kip.uni-heidelberg.de
Openafs-Client starten Ja (oder Nein wenn nicht erwünscht)


OpenAFS Kernel Modul erstellen/installieren

Um das Kernel-Modul für OpenAFS zu erstellen ist folgendes zu tun:

aptitude install module-assistant openafs-module-source
cd /usr/src
module-assistant build openafs
module-assistant prepare openafs
dpkg -i openafs-modules-2.6.18-3-686_1.4.2-4+2.6.18-7_i386.deb
Dies gilt nur für den aktuellen Kernel und muss für andere Kernel dann wiederholte werden!

Nun kann auch der OpenAFS-Client gestartet werden

/etc/init.d/openafs-client force-start

Test

$ ls -l /afs
lrwxr-xr-x 1 daemon root   21 2007-01-31 12:37 kip -> kip.uni-heidelberg.de
drwxr-xr-x 2 root   root 2048 2007-02-12 12:05 kip.uni-heidelberg.de


Solaris

Windows

Backup

Dateien von gestern, ältere Dateien ...