Ich bin am MPI für Astrophysik als Systemadministrator
beschäftigt. Unsere Hardware-Plattform besteht aus 10 IBM AIX
Servern und etwa 25 persönlichen Workstations der Hersteller IBM, Silicon
Graphics und Sun.
Was war die Motivation für ein eigenes Werkzeug zur Verwaltung von
Benutzerkennzeichen.
Als vor einigen Jahren am MPI für Astrophysik zusätzlich zum
Unix Filesystem das AFS Filesystem eingeführt wurde, wurde der Vorgang
etwas komplizierter. Nun müssen etwa 10 Schritte ausgeführt
werden, bis ein neues Benutzerkennzeichen angelegt ist. Dabei gilt es,
mehrere Datenbanken im AFS und im Unix mit redundanten Informationen
konsistent zu halten.
Historie
Sehr bald nach der Einführung von AFS am MPA war klar, daß zur
Generierung von Benutzerkennzeichen ein automatisiertes Werkzeug sehr
hilfreich wäre. Da die Performance kein Kriterium für solch eine
Anwendung darstellte, erschien uns Perl als die geeignete Sprache, um solch
ein Werkzeug zu erstellen.
So entstand im Oktober 1994 ein erstes Perlprogramm zum
Generieren von neuen Benutzerkennzeichen. Hierbei handelte es sich um ein
monolithisches Perlprogramm mit einer Frage-und-Antwort Eingabe.
Im zweiten Schritt erhielt das Programm im Januar 1995 eine
Kommandozeilen-Option und passend dazu ein graphisches Tcl/Tk Front-End.
Da das Programm bei fehlerhaften Benutzereingaben recht umständlich war,
bestand bald der Wunsch, das graphische Interface in Perl
umzuschreiben. Aber zu dieser Zeit hatten wir Perl/Tk noch nicht
installiert.
Im Laufe des Jahres 1996 wurde dann das Programm völlig neu überarbeitet
und unter Anwendung der im Perl-5 zur Verfügung stehenden Möglichkeiten
der Objektorientierung ein modulares Paket entwickelt. Der Hintergedanke
für den Klassenansatz war die Wiederverwendbarkeit des Codes und vor allem
die Möglichkeit der leichten Erweiterbarkeit der Klassen für spätere
Anwendungen.
Als im September 1996 die zweite Ausgabe von `Programming Perl' erschien,
war dies ein willkommener Anlaß die Version Perl 5.003 und die Version
Perl/Tk 400.200 zu installieren. Somit war es mir möglich, endlich auch
das Graphik-Interface in Perl zu erstellen.
Im Dezember 1996 hatte ich den ersten Prototypen des neuen Mp3a Programms
erstellt.
Ab Februar 1997 wurde das Mp3a Programm zum Anlegen der MPA
Benutzerkennzeichen eingesetzt.
Im November 1997 standen dann weitere Funktionen zur Verfügung. Damit war
die jetzige äußere Form erreicht.
Das Hauptmenü
Diese enthält die Funktionen `Benutzer anlegen und löschen'. Es können
die Daten eines Benutzerkennzeichens angezeigt werden. Es ist möglich, das
Verfallsdatum eines Benutzerkennzeichens zu ändern. Natürlich können
auch die persönlichen Daten eines Benutzer geändert werden, wie z.B. die
Zimmernummer oder die Telefonnummer. Ferner lassen sich auch AFS relevante
Daten abfragen oder andere Hilfsfunktionen ausführen.
Die Maske 'Benutzer anlegen'
Auf dieser Folie sehen Sie als Beispiel die Maske zum `Benutzer
anlegen'. Diese Maske ist abgeleitet aus dem Perl/Tk Demo Skript `rolodex', das
von Stephen O. Lidie von Tcl/Tk nach Perl/Tk konvertiert wurde.
Hier werden alle notwendigen Daten für ein Benutzerkennzeichen erfaßt
und auch verifiziert, bevor dieses dann angelegt wird. Einige Felder werden
mit Werten vorbelegt. Im Feld mit der UID-Nummer wird die nächste freie
Nummer des Nummernkreises angeboten.
Klassendiagramm
Auf dieser Folie sehen Sie das Klassendiagramm des Mp3a Programms. Ich habe
dazu die UML-Notation verwendet. Das Diagramm beschreibt die statische
Struktur der Klassen und ihre Beziehungen untereinander.
Die Klasse `Base' ist die Oberklasse für alle Klassen des Mp3a
Programms. Diese enthält alle die Attribute, die den verschiedenen
Unterklassen gemeinsam sind. Außerdem enthält sie die `accessor
methods' für die Attribute aller Unterklassen. Diese Relation wird eine
einfache Vererbung genannt.
Bei der Beziehung zwischen der Klasse `Unix' und der Klasse `Gecos' handelt
es sich um eine sogenannte Komposition oder auch `Composition Relationship'.
Das heißt, die Klasse `Gecos' ist Teil (`is-part-of') der Klasse
`Unix'.
Zwischen der Klasse `Unix' und der Klasse `PTS' besteht eine sogenannte
Abhängigkeit oder auch `Dependency Relationship', die bei Booch auch
`Using Relationship' genannt wird. So muß z.B. das Attribut `Login-Name'
in beiden Klassen den gleichen Wert haben und in jeder der beiden Klassen
eindeutig sein.
Die Klasse `MpaAccount' ist die Unterklasse der 5 Klassen Unix, ... ,FS.
Bei dieser Beziehung handelt es sich um eine Mehrfachvererbung.
Implementierung
Bei der Implementation der Klassen habe ich mich stark an die Beispiele aus
den Perl-Büchern, beziehungsweise an das Perl Tutorial von Tom
Christiansen angelehnt.
Die Attribute einer Klasse werden in einem Hash abgelegt.
Die Objekte einer Klasse werden als anonyme Hash-Referenzen dargestellt.
Als `accessor methods' wurde eine AUTOLOAD Funktion in der Oberklasse `Base'
implementiert.
Alle Module enthalten eine Inline Dokumentation im POD Format.
Zusammenfassung
Zusammenfassend kann gesagt werden, daß das Mp3a Programm eine sehr
spezialisierte Anwendung darstellt. Primäres Ziel ist die
Arbeitserleichterung für die Systemverwalter am MPA. Für die
Allgemeinheit wird dieses Programm nicht von so großem praktischem
Interesse sein. Trotzdem steht
es unter der Gnu Public Licence und ist für Interessierte
erhältlich.
Sollte jemand von Ihnen Interesse am Mp3a Programm haben, dann senden Sie
einfach Email an nog@MPA-Garching.MPG.DE.
Motivation
In eigentlich allen UNIX Systemen ist `Benutzerkennzeichen anlegen' eine
ziemlich einfache Angelegenheit. Meistens genügen 2 - 3
Systemkommandos.
- es muß ein Home-Verzeichnis angelegt werden
- und es muß in der Datei /etc/passwd ein Eintrag eingefügt werden
- es muß ein Eintrag in der Datenbank für den Protection Server
angelegt werden. Der Protection Server überwacht die Zugriffsrechte der
einzelnen Benutzer.
- dann muß ein Eintrag in der Datenbank für den Kerberos
Authentification Server angelegt werden. Das AFS arbeitet mit einer Kerberos
Authentifizierung.
- dann müssen die spezifischen Werte für diesen KAS Eintrag gesetzt
werden
- dann muß ein AFS Volume angelegt werden. Denn das AFS verwaltet seinen
Plattenplatz selbst.
- dann muß ein AFS Mountpoint im Unix Filesystem angelegt
werden. Dieser stellt die Verbindung zwischen dem AFS und dem Unix
Filesystem her.
- dann müssen die AFS Zugriffsrechte für den Mountpoint gesetzt werden
- dann muß in der Datei /etc/passwd ein Eintrag eingefügt werden
Als lokale Erweiterung kommt dann noch hinzu, eine Datenbank für die
Betreuer der einzelnen Benutzer. Denn die meisten Benutzer haben
Zeitverträge und werden in dieser Zeit von einem Wissenschaftler betreut.
Deshalb muß auch das Ende des Zeitvertrags abgespeichert werden, damit
diese Benutzerkennzeichen automatisch deaktiviert werden.
Und bei längerfristigen Benutzerkennzeichen wird auch ein Eintrag in die
Mail-Alias Datenbank vorgenommen.