EDV:OpenAFS: Difference between revisions
(ââLinux-Client: ausgelagert) |
|||
Line 269: | Line 269: | ||
[[EDV:OpenAFS/Install_i386_linux26]] |
[[EDV:OpenAFS/Install_i386_linux26]] |
||
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 auch auf Heimdal zurĂŒckgreift. |
|||
aptitude install heimdal-clients |
|||
Die folgenden Fragen wie folgt beantworten: |
|||
{|style="margin-left:25px;" |
|||
|- |
|||
| 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 |
|||
{{Achtung|Es empfielt sich die '''Version 1.4.2''' zu installieren. Diese gibt es ab Debian 4.0 ('''etch''') oder in den '''sarge-backports''': |
|||
echo "## Backports |
|||
deb http://www.backports.org/debian sarge-backports main contrib non-free |
|||
" >>/etc/apt/sources.list |
|||
aptitude update |
|||
aptitude update |
|||
aptitude '''-t sarge-backports''' install openafs-client openafs-doc openafs-modules-source |
|||
}} |
|||
Die folgenden Fragen wie folgt beantworten: |
|||
{|style="margin-left:25px;" |
|||
|- |
|||
| 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-modules-source |
|||
cd /usr/src |
|||
module-assistant prepare openafs |
|||
module-assistant build openafs |
|||
dpkg -i openafs-modules-2.6.18-3-686_1.4.2-4+2.6.18-7_i386.deb |
|||
{{Achtung|Dies gilt nur fĂŒr den aktuellen Kernel und muss dann fĂŒr andere Kernel wiederholt 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 |
|||
==== Link fĂŒr die Homeverzeichnisse anlegen ==== |
|||
Als Homeverzeichnis wird nicht der ganze Pfad '/afs/kip/user/home1/userX' im LDAP stehen |
|||
sondern '''/afsuser/home1/userX''', daher muss dieser Link angelegt werden: |
|||
ln -s /afs/kip.uni-heidelberg.de/user /afsuser |
|||
==== NSS-Konfiguration (Namensauflösung) ==== |
|||
FĂŒr die Namensauflösung (Nutzername/Gruppenname zu uid/gid-Nummer) ist [[EDV:LDAP|LDAP]] zustĂ€ndig. |
|||
Hier ist beschrieben, wie die Konfiguration erfolgen sollte: [[EDV:LDAP#NSS (Namensauflösung)]] |
|||
==== PAM-Konfiguration (Pluggable Authentication Modules) ==== |
|||
Wenn zum Login die AFS bzw. LDAP-Accounts verwendet werden sollen, muss PAM entsprechend konfiguriert werden. |
|||
Zur Vorbereitung muss erst einmal das LDAP-PAM-Module wie hier beschrieben konfiguriert werden: [[EDV:LDAP#PAM (Pluggable Authentication Modules)]] |
|||
Nun die PAM-Module installieren: |
|||
aptitude install libpam-heimdal libpam-openafs-session |
|||
Jetzt nur noch einen Eintrag fĂŒr '''pam_krb5.so''' fĂŒr den jeweiligen Dienst hinzufĂŒgen oder |
|||
allgemein in den '''common-*'''-Dateien. |
|||
Damit es nicht zu einfach wird teilen wir jetzt alles auf. |
|||
Die Authentisierung lĂ€uft ĂŒber Kerberos, das Accountmanagement ĂŒber LDAP und fĂŒr die Session benötigen wir AFS. |
|||
Die fertigen PAM-Dateien/EintrÀge sehen dann zum Beispiel so aus: |
|||
#/etc/pam.d/common-auth |
|||
auth sufficient '''pam_krb5.so''' ignore_root '''minimum_uid=1000''' |
|||
auth required pam_unix.so nullok_secure |
|||
#/etc/pam.d/common-account |
|||
account sufficient '''pam_ldap.so''' ignore_unknown_user |
|||
account required pam_unix.so |
|||
#/etc/pam.d/common-session |
|||
session optional '''pam_krb5.so''' ignore_root |
|||
session optional '''pam_openafs_session.so''' |
|||
session required pam_unix.so |
|||
==== Single-Sign-On ĂŒber SSH ==== |
|||
Gleich vorweg, die normale Public-Key-Authentisierung von SSH funktioniert nicht, |
|||
da kein anonymer Zugriff auf das '.ssh'-Verzeichnis im AFS möglich ist und auch nicht sein sollte! |
|||
Aber als Lösung fĂŒr ein Single-Sign-On bietet sich die GSSAPI-Authentisierung von SSH an. |
|||
Nun sind dazu einige Schritte nötig: |
|||
===== SSH-Server konfigurieren ===== |
|||
In der '''/etc/ssh/sshd_config''' folgendes rein schreiben: |
|||
KerberosAuthentication yes |
|||
GSSAPIAuthentication yes |
|||
GSSAPICleanupCredentials yes |
|||
SSH-Server neustarten: |
|||
/etc/init.d/ssh restart |
|||
===== SSH-Client konfigurieren ===== |
|||
Damit der Client auch GSSAPI verwendet muss dies explizit eingestellt werden. |
|||
Dazu entweder in der globales '''/etc/ssh/ssh_config''' oder in der Nutzerspezifischen '''~/.ssh/config''' folgendes eintragen: |
|||
GSSAPIAuthentication yes |
|||
GSSAPIDelegateCredentials yes |
|||
===== Kerberos Host-Key erstellen ===== |
|||
FĂŒr die Authentisierung ist ein Host-Key von Kerberos notwendig! |
|||
{{Achtung|{{IconAchtung}} Dieser kann allerdings nur von der [[EDV:EDV-Abteilung|EDV-Abteilung]] erstellt und eingetragen werden!}} |
|||
Dazu Key im LDAP erstellen ('''gq''')! |
|||
Nun als root auf dem Rechner einloggen (hostY): |
|||
root@'''hostY''':~# kadmin -p '''user/admin''' |
|||
kadmin> cpw -r host/'''hostY'''.kip.uni-heidelberg.de |
|||
kadmin> get host/'''hostY'''.kip.uni-heidelberg.de |
|||
kadmin> ext host/'''hostY'''.kip.uni-heidelberg.de |
|||
kadmin> quit |
|||
Kontrolle: |
|||
root@'''hostY''':~# ktutil list |
|||
===== Kerberos Key holen und einloggen ===== |
|||
Damit wir uns nun einloggen können mĂŒssen wir uns den entsprechenden Kerberos-Key holen. |
|||
kinit userX |
|||
klist -v |
|||
{{Achtung|Das '''krbtgt''' (Kerberos-Ticket-Granting-Ticket) muss '''forwardable''' sein! Das kann mit 'klist -v' kontrolliert werden: |
|||
klist -v}} |
|||
Nun sollte ein Login ohne weitere Passwordeingabe auf den Server möglich sein: |
|||
ssh -l userX hostY |
|||
=== Solaris === |
=== Solaris === |
Revision as of 13:44, 21 March 2007
Allgemeines
Hier im KIP gibt es ein OpenAFS als zentrales Dateisystem.
- EDV-interne Seite (AFS-Server-Administration)
- Wikipedia Artikel: w:de:Andrew File System
- Homepage von OpenAFS: http://www.openafs.org
- Das Rechenzentrum hat auch ein AFS: http://www.urz.uni-heidelberg.de/Software/AFS/
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 mehrere 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.
Mit dem tokens-Kommando kann ĂŒberprĂŒft werden, ob ein solches 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 oder Erneuern eines Tokens, wird klog verwendet:
userX@pcY:~$ klog userX
Die GĂŒltigkeit eines solchen Tokens bezieht sich standardmĂ€Ăig auf einen Nutzer auf einem Rechner, 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 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' wird auch gleich das AFS-Token angezeigt, 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 die eigene 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)
Achtung: Von den Unix/Linux-Protection-Bits fĂŒr User, Group und Others werden nur die von User verwendet. Dies erfolgt, nachdem die ACL ausgewertet wurde.
Unterschied der AFS-ACLs zu Unix-Dateirechten
Im typischen 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 jeder dieser Klassen fĂŒr jede Datei 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
Es ist eine feinere Rechteaufteilung implementiert (siehe Punkt EDV:OpenAFS#Rechte im AFS) und vor allem können beliebig viele Gruppen und 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 Verzeichnisse 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 | Gruppe der Administratoren |
Rechte im AFS
Es existieren sieben Zugriffsrechte im AFS:
Damit man diese Rechte nicht immer alle einzeln angeben muss, gibt es folgende 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 mehrere):
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, kann fs help verwendet werden:
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
Auflisten der ACLs:
fs listacl /afs/kip/temp
Ăndern der ACL:
fs setacl /afs/kip/temp system:administrator all
Auflisten der Quota:
fs quota /afs/kip/temp fs listquota /afs/kip/temp
Herausfinden des Volumes zum Mountpoint:
fs lsmount /afs/kip/temp
Löschen des Eintrags im Cache des AFS-Clients:
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)
General
Wichtig fĂŒr AFS sind synchrone Zeiten der Systemuhren, deshalb sollte auf jedem Client die Uhrzeit auch stimmen (siehe NTP).
Allgemeine OpenAFS Dokumentation
Die Dokumentation von Openafs ist hier zu finden:
file:///afs/kip/afsdoc/html/QuickStartUnix/auqbg007.htm#HDRWQ133 http://www.openafs.org/pages/doc/QuickStartUnix/auqbg007.htm#HDRWQ133
CellServDB und ThisCell
Unsere Zelle (Cell) im KIP ist natĂŒrlich kip.uni-heidelberg.de, daher sieht die ThisCell-Datei so aus:
kip.uni-heidelberg.de
In der CellServDB sollte fĂŒr die KIP-Zelle folgender Eintrag stehen:
>kip.uni-heidelberg.de 129.206.176.40 # ldap.kip.uni-heidelberg.de 129.206.176.149 # ldap2.kip.uni-heidelberg.de
Diese Dateien ist auch unter /afs/kip/common/etc/ zu finden.
Linux-Client
EDV:OpenAFS/Install_i386_linux26
Solaris
Alt! : Installation des OpenAFS-Clients auf Solaris 9
HP
Windows
FAQ
Wo kann ich auf AFS zugreifen ohne selbst einen Client zu installieren?
Auf kip1.kip.uni-heidelberg.de ist ein OpenAFS-Client und auch die Heimdal-Clients installiert. Demnach kann dort auch auf das AFS zugegriffen werden.
kinit lehnt mein Passwort ab!
Es kann sein das noch kein Kerberos-Eintrag erzeugt wurde. Dies ist der Fall, wenn kinit sagt unknown statt Password incorrect
userX@kip1:~$ kinit userX userX3@KIP.UNI-HEIDELBERG.DE's Password: kinit: krb5_get_init_creds: Client (userX@KIP.UNI-HEIDELBERG.DE) unknown
Um dann seinen Eintrag zu erzeugen, muss man sich einmal auf Portal anmelden:
https://portal.kip.uni-heidelberg.de/account/
Nun wird versucht, das Kerberos-Passwort zu setzten.
Falls eine Fehlermeldung erscheint, mĂŒssen Sie sich and die EDV-Abteilung wenden. |
Wie komme ich an ein Backup meines Homeverzeichnisses?
Jeden Tag um 0:00Uhr wird der Stand aller volumes eingefroren und in ~/.backup verfĂŒgbar gemacht. Somit kann jeder auf diesen Stand seines Homeverzeichnisses zugreifen.
ls -l ~/ ls -l ~/.backup