EDV:OpenAFS: Difference between revisions
(→Authentisieren: afs komandos) |
(Allegemeine HIlfe und ACLs erklärt ...) |
||
Line 61: | Line 61: | ||
Um diese Gültikeit nur auf '''eine''' Shell zu beziehen, |
Um diese Gültikeit nur auf '''eine''' Shell zu beziehen, |
||
muss man diese mit '''kpagsh''' kapseln und danach erst das Token holen: |
muss man diese mit '''kpagsh''' kapseln und danach erst das Token holen: |
||
userX@pcY:~$ |
userX@pcY:~$ pagsh |
||
userX@pcY:~$ klog userX |
userX@pcY:~$ klog userX |
||
Line 76: | Line 76: | ||
==== Arbeiten mit Kerberos-Kommandos ==== |
==== Arbeiten mit Kerberos-Kommandos ==== |
||
Da wir ja Heimdal-Kerberos für die Authentisierung von AFS verwenden, |
|||
kinit <user> |
|||
können auch die Heimdal-Clients zur Authentisierung verwendet werden. |
|||
klist |
|||
Wenn OpenAFS gestartet ist wird dann, neben dem Kerberos-Ticket, |
|||
kdestroy |
|||
auch automatisch ein AFS-Token geholt. |
|||
Zur Abfrage der Tickets wird '''klist''' verwendet. |
|||
=== ACLs verwenden === |
|||
Mit der Option ''''-T'''' zeigt er auch gleich das AFS-Token an, falls vorhanden: |
|||
<pre>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 |
|||
</pre> |
|||
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''': |
|||
<pre>userX@pcY:~$ kdestroy |
|||
userX@pcY:~$ klist -T |
|||
klist: No ticket file: /tmp/krb5cc_1000 |
|||
</pre> |
|||
=== 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 |
|||
{{Achtung|Leider können solche ACLs nur auf Verzeichnise angewendet werden.}} |
|||
==== Besondere Gruppen im AFS ==== |
|||
{| {{Prettytable}} |
|||
! 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: |
|||
{| {{Prettytable}} |
|||
! 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 ({{IconAchtung}} 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'': |
|||
{| {{Prettytable}} |
|||
! Alias |
|||
! Ausführlich |
|||
! Bedeutung |
|||
|- |
|||
| write || rlidwk || Schreiben (alle außer '''A'''dminister) |
|||
|- |
|||
| 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 * |
fs listacl * |
||
fs setacl ... |
|||
Mit '''fs setacl''' kann eine ACL geändert werden (oder gleich meherere): |
|||
fs listquota |
|||
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 |
||
fs help listacl |
|||
pts listentries -help |
|||
fs help setacl |
|||
pts members s3 |
|||
=== 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 |
|||
Line 173: | Line 324: | ||
=== Windows === |
=== Windows === |
||
== Backup == |
|||
Dateien von gestern, ältere Dateien ... |
|||
Revision as of 16:26, 27 February 2007
OpenAFS am KIP
General
- 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 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:
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 ...