Skip to topic | Skip to bottom
Instantafs.TokenMgrr1.1 - 15 Jul 2005 - 12:48 - TWikiGuest? [Zum Ende]

Start of topic | Direkt zum Menü

Arbeiten mit instantafs.tokenmgr

Einführung

Eigentlich macht der tokenmgr nichts weiter, als 2 Programme auf die richtige Art und Weise aufzurufen:

  • kinit - Damit wird ein Kerberos5-TGT vom Kerberos-kdc geholt
  • aklog - Dieses Kommando holt mit Hilfe des TGT ein AFS-Ticket vom Kerberos-kdc und wandelt das in ein AFS-Token um

Warum muss man dafür über 1000 Zeilen Perl benutzen und nicht ein 2-zeiliges bash-Skript? Die Antwort ist nicht leicht sondern ergibt sich aus der Unzahl von sinnvollen Anwendungsmöglichkeiten, die sich in unterschiedlichsten Parametern der beiden genannten Tools ausdrücken. Neben den interaktiven Möglichkeiten existieren noch eine vielzahl von speziellen Funktionen - vor allem im Bezug auf Reauthentifikation.

Auf dieser Wiki-Seite sollen einige der viele Anwendungsmöglichkeiten von instantafs.tokenmgr an Beispielen erklärt werden.

Interaktives arbeiten im AFS

Authentifikation einer kompletten Session

Arbeitet man interaktiv an einem Unix-Rechner, so geschieht das meist in Form einer Session - entweder im Textmode oder aber in einer grafischen X-Session. In beiden Fällen ist allen Programmen in der Session üblicherweise eines gemein - sie laufen unter der selben UID.

Es existiert eine einfache Möglichkeit, alle Programme einer Session gleichzeit im AFS zu authentifizieren, wobei die Authentifikationsinformation an der UID festgemacht wird. Das geht so:

user@host > tokenmgr -l

Achtung:

  • Der AFS-Benutzername wird erraten - d.h. er wird aus dem Nutzername, mit dem man eingeloggt ist abgeleitet. Soll ein anderer Name benutzt werden, nimmt man am besten die Option -p [AFS-Name] :
    user@host > tokenmgr -lp otheruser
  • Befindet man sich bereits in einer PAG, wird die Authentifikationsinformation nicht an der UID festgemacht. Mehr dazu steht im User-Guide.

Ausführen eines einzelnen Programmes mit AFS-Authentifikation

Manchmal will man mit besonders mächtigen Rechten im AFS arbeiten und nicht alle Programme der Session sollten diese Rechte bekommen. Dazu führt man ein einzelnes Programm mit AFS-Rechten aus - alle von diesem gestarteten Prozesse erben dann die AFS-Zugriffsrechte. Nichts, was dieses Programm oder einer seiner Unterprozesse in Bezug auf Kerberos- oder AFS-Authentifikation anstellt, hat Einfluss auf die restliche Session.

Beispiele:

  • Einige Daten sollen aus dem AFS kopiert werden:
    user@host > tokenmgr -S [AFS-Name] -- cp -a /afs/zellenname/wichtige_dateien/* /tmp
  • Eine Shell soll mit AFS-Rechten versehen werden:
    user@host > tokenmgr -S [AFS-Name] bash
    Wie man sieht, kann man das -- weglassen. Es ist nur nötig, wenn in dem mit AFS-Rechten aufzurufenden Kommando Parameter vorkommen, die mit - beginnen.

Hinweise:

  • Kern der -S -Option sind eigentlich zwei andere: -P und -K . Diese anderen Optionen schirmen jeweils die AFS-Authentifikation ( -P ) bzw. die Kerberos-Authentifikation ( -K ) gegen Prozesse ausserhalb des gestarteten Programmes und seiner Unterprogramme ab. Beide Optionen können auch allein benutzt werden - wofür das gut ist, wird in dieser Doku noch erläutert.

Informationen über die AFS-Authentifikation einholen

Token und Ticket

Mit dem Kommando

user@host > tokenmgr -t

kann man testen, ob ein AFS-Token vorhanden ist. Der exit-Code des tokenmgr liefert einen Fehler zurück, wenn entweder kein Token existiert oder aber das Token in Kürze abläuft. Die Mindest-Restzeitspanne läßt sich mittels --time test=[Restzeit] einstellen (siehe man tokenmgr ).

Der Test läßt sich auch mit einer Authentifikation verbinden, so dass immer dann eine AFS-Authentifikation durchgeführt wird, wenn kein AFS-Token da ist:

user@host > tokenmgr -T

Hinweise:

  • Man kann das mit der Option --nokinit verbinden. In diesem Fall wird versucht, ein bereits vorhandenes Kerberos5-TGT zu benutzen. Das ist gelegentlich z.B. bei ssh-Sessions sinnvoll. Evtl. ist auch die Option -P hier nützlich, da man dadurch die ausgeführten Prozesse in eigene PAG abkapselt und so vor "fremden Einflüssen" (z.B. von einer anderen ssh-Session des selben Nutzers) schützt.
  • Der Test erfaßt nur das AFS-Token, nicht das Kerberos-TGT. Dieses muss man derzeitig noch mit folgendem Kommando testen: user@host > klist
    Der exit-Code sagt dabei jedoch nur etwas über die Existenz eines TGT aus, nicht darüber, wie lange es noch gültig ist. Sollte das Ticket als z.B. nach 1 min ablaufen und man verläßt darauf, dann hat man vielleicht ein Problem.
    Es ist geplant, einen Test auf ein gültiges TGT in tokenmgr einzubauen.

Eine PAG...

Man kann auch testen, ob man sich gerade in einer PAG befindet:

user@host > tokenmgr -c

Die Ausgabe ist Klartext, der exit-Code enthält den Wahrheitswert von "Der Prozess läuft in einer PAG".

Hinzufügen eines AFS-Tokens einer anderen Zelle

Arbeitet man z.B. gerade in seiner Heimat-AFS-Zelle, will jedoch auch auf Daten einer anderen Zelle zugreifen, dann will man üblicherweise nur ein Token dieser Zelle, das Kerberos-TGT der Heimatzelle soll jedoch erhalten werden. Die reine -l -Option ist in diesem Fall ungeeignet, da sie so das TGT überschreiben würde. So macht man's statdessen:

user@host > tokenmgr -Klp [AFS-Name]@[Zellenname]

Hinweise:

  • Das geht auch z.B. in einer mit tokenmgr -S gestarteten AFS-Sitzung - in diesem Fall könnte nur diese AFS-Sitzung auf das neue Token zugreifen, nicht jedoch die restliche Session.
  • Man kann das mit beliebig vielen Tokens machen - der Record des Authors lag bei 4 :-) .
  • Zukünftige tokenmgr-Versionen werden auch mit mehreren -p -Optionen klarkommen und sich dann um die Tokens aus mehreren Zellen gleichzeitig kümmern können.

Achtung:

  • Selbstverständlich gilt trotzdem weiterhin, dass pro AFS-Zelle nur ein Token auf einmal aktiv sein kann.

Reauthentifikation - AFS auf Dauer

Das ticketbasierte Kerberos5 sowie AFS, das ja auf Kerberos aufbaut, kennen nur Authentifikation auf Zeit - also mit begrenzter Dauer. Soll jedoch z.B. ein Zeitintensiver Job mehrere Tage/Wochen durchlaufen, so ist das hinderlich und man muss sich mit Reauthentifikation - also dem automatisch wiederholten Holen von Ticket und Token behelfen.

Reauthentifikation in einer laufenden Session

Ein Kommando soll viele Tage lang laufen. Der Benutzer plant, solange eingeloggt zu bleiben. Das Programm ist teilweise interaktiv und besteht auf Benutzereingaben.

Lösung:

user@host > tokenmgr -rS [AFS-Name] -- lange_laufendenes_programm -mit_parametern

Achtung:

  • Eine X-Session ist etwas sehr fragiles. Wenn das Programm nicht grafisch ist, sollte man sich mit einer Screen-Session behelfen (siehe weiter unten).
  • Sichern sie die grafische Sitzung ab, wenn Sie den Rechner verlassen. Durch die Reauthentifikation kann an Angreifer unbegrenzten Zugriff auf Ihre AFS-Rechte bekommen und vermutlich auch das Passwort herrausfinden.

Reauthentifikation im Hintergrund

Soll ein Kommando nicht-interaktiv im Hintergrund laufen, so kann man darauf verzichten, die aktuelle Sitzung (z.B. X-Session) auf Krampf offen zu halten.

So geht das:

user@host > tokenmgr -brS [AFS-Name] -- lange_laufendenes_programm -mit_parametern

Hinweise:

  • -b weisst den tokenmgr an, sich von der Konsole abzukoppeln und einen einen fork() in den Hintergrund auszuführen. Das auszuführende Kommando läuft dann als Child des tokenmgr, der wiederun als Child von init läuft.

Reauthentifikation im Hintergrund mit Interaktionsmöglichkeit

##### to be written

Spezialfälle

Wechseln der AFS-Identität und der Unix-Identität

Will man komplett zu einem anderen Benutzer werden, so bietet sich folgendes Kommando an:

user@host> tokenmgr -U otheruser
Password for otheruser@meinezelle : AFS-Passwort
Password: Unix-Passwort
otheruser@host >

Hinweise:

  • Unter InstantAFS sind AFS-Passwort und Unix-Passwort immer gleich.
  • Der neue Benutzer hat lediglich eine AFS-Identität, kein Kerberos-TGT (-> acall funktioniert also z.B. nicht). Das ist eine Beschränkung im tokenmgr, die sobald wie möglich beseitigt werden soll.

-- FrankBurkhardt - 03 May 2005
[Zurück zum Start]


Aktuelle Wiki-Seite: Instantafs > DokuMentation > TokenMgr

[Zurück zum Start]