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 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