MMIMS und NIS/YP
Der Witz an NIS ist die Verbreitung von Daten wie die Paßwortdatei und
die Gruppendatei in einem Workstationnetz.
Herkömmliche NIS-Administration
Die sog. maps werden als Ascii-Dateien gehalten. Diese werden mit
Hilfe des universellen Adminitrationstool vi gepflegt.
Dieses ist für Daten akzeptabel, die sich relativ selten ändern. Beim
Eintragen eines Eintrags in der YP-map ist das Vorgehen via vi sehr
umständlich.
Zielvorstellung
Die NISserver soll eine RPC-Schnittstelle zu einer zentralen Datenbank
sein.
In der neuen ypserv.conf soll daher angegeben werden, aus
welcher Datenbank und wie die Map generiert wird.
Grobe Ideen für die konfiguration:
passwd.byname
{
Typ=Adabas
User=YP,
passwd=geheim,
fetch(user)='SELECT user,cpwd,uid,name,vorname,home,shell FROM passwd
WHERE user=:user',
fetchall='SELECT user,cpwd,uid,name,vorname,home,shell FROM passwd'
muster='%s:%s:%d:%s,%s'
}
Um die Implementierung einfacher zu machen, könnte man die Abfragen
festschreiben. Bei verschiedenen Firmen müßte das Schnittstellenmodul
denn jeweis neu erzeugt werden (Programmgenerator ?)
MIMMS V0.1
In ersten MMIMS hatte ich den yppasswdd(8) aufgebohrt, so daß
man mit ypadmin neue Nutzer eintragen,löschen und ändern konnte.
Damit müssen aber die Daten aus mehreren Quellen konsistent erhalten
werden, was aus Sicht des Datenbankgedankens nicht gut ist.
Eine andere Alternative ist der Gang in die Objektorientierung mit
einer Schnittstelle wie CORBA: Die maps wären somit Teil des
Universums einer verteilten Datenbank. Dieses Vorgehen erscheint mir
noch als zu revolutionär, um es in Kürze zu Implementieren.
Architekturkritik von NIS
Bemerkenswert sind
- RPC-Architektur
- Ausfallsicherheit durch Replikation
- Verteilungsmechanismen
Verbesserungswürdig ist bei den Implementierungen:
- GDBM/NDBM durch eine änderbare Datenbank zu ersetzen
- GDBM erlaubt nur einen Schreiber oder die Leser. aus diesem
Grunde wird bein ändern eine Schattendatenbank gebaut, die dann als
ganzes überschreiben wird.
Der ypxfrd(8) möchte aber aus Performacegründen nicht die einzelnen
Sätze holen, sondern die Map-Dateien transferieren. Diese Tatsache
verhindert aber die Kompatibilität. (Quelle: ypxfrd.x in ypserv-1.3.6)
Rudolf Weber