Copyright © 1999 by Axel T. Schreiner.  All Rights Reserved.



NetInfo + awk == NIS

NetInfo
Verteilte, hierarchische Datenbank zur Systemverwaltung, read/write-Zugriff.

NIS
Datenbank aus verschiedenen Maps (key zu value Abbildungen), readonly-Zugriff.




NIS Kommandos

cd /var/yp; make benützt awk und makedbm, um aus Dateien wie /etc/passwd Hashtabellen wie /var/yp/domain/passwd.{byuid,byname} zu erzeugen.
domainname name definiert oder zeigt den Namen der Domain (Menge von Hashtabellen).
ypserv serviert alle Hashtabellen aus /var/yp/domain über UDP.
ypbind findet per broadcast den ypserv der Domain.
ypcat -k map gibt alle Schlüssel und Werte einer Hashtabelle aus.

Dateien und Maps

makedbm bildet je einen Text-Schlüssel (ohne Leerzeichen) auf je eine Textzeile ab. Da oft nach mehreren Kriterien gesucht wird, müssen mehrere Hashtabellen erzeugt werden.

/etc/aliases mail.{aliases,byaddr} Benutzerlisten für mail
/etc/bootparams bootparams Volumes für diskless-Systeme
/etc/ethers ethers.{byname,byaddr} Ethernet-Adressen für Rechner
/etc/group group.{byname,bygid} Attribute für Benutzergruppen
/etc/hosts hosts.{byname,byaddr} Internet-Adressen für Rechner
/etc/netgroup netgroup.{byhost,byuser} Gruppierung von Rechnern und Benutzern
/etc/netmasks netmasks.byaddr Netzmaske für Internet-Adresse
/etc/networks networks.{byaddr,byname} Definitionen für Internet-Netze
/etc/passwd passwd.{byname,byuid} Attribute für Benutzer
netid.byname
/etc/protocols protocols.{bynumber,byname} Attribute für Internet-Protokolle
/etc/rpc rpc.bynumber Attribute für Remote Procedure Calls
/etc/services services.byname Attribute für Internet-Services
ypservers Namen für NIS-Server
/etc/exports für NFS freigegebene Bereiche
/etc/fstab Beschreibungen für mount und automount
auto.home Attribute für automount



NetInfo Kommandos

nibindd startet je einen netinfod für einen Katalog wie /etc/netinfo/local.nidb.
netinfod serviert einen Katalog als NetInfo-Domain.

Jeder Rechner benötigt mindestens die Domain localhost/local. Jede Domain kann in eine parent-domain gebunden sein. Alle Domains bilden einen Baum und sie können auch mit Pfaden bezeichnet werden.

Eine Domain enthält einen Baum von Directories. Jedes Directory kann Properties und zu jeder Property Werte enthalten.

nidomain -l host zeigt (und manipuliert) die Domain-Server.

nidump format domain
niload format domain wandeln zwischen NetInfo und Systemdateien um.

niutil -create domain path erzeugt ein Directory.
niutil -createprop domain path key value... trägt Werte für eine Property ein.
niutil -list domain path zeigt Directories in Directory.
niutil -read domain path key zeigt Properties und Werte.

path ist entweder eine Directory-Nummer oder besteht aus Komponenten: property=wert

Dateien, Directories und Properties

/etc/aliases aliases Benutzerlisten für mail
/etc/bootparams machines Volumes für diskless-Systeme
/etc/ethers machines en_address Ethernet-Adressen für Rechner
/etc/group groups Attribute für Benutzergruppen
/etc/hosts machines ip_address Internet-Adressen für Rechner
/etc/netgroup machines netgroups Gruppierung von Rechnern und Benutzern
/etc/netmasks Netzmaske für Internet-Adresse
/etc/networks networks Definitionen für Internet-Netze
/etc/passwd users Attribute für Benutzer
/etc/protocols protocols Attribute für Internet-Protokolle
/etc/rpc rpcs Attribute für Remote Procedure Calls
/etc/services services Attribute für Internet-Services
/etc/exports exports für NFS freigegebene Bereiche
/etc/fstab mounts Beschreibungen für mount und automount



NetInfoManager

Eine Vielzahl anderer Manager bearbeitet die gleichen Daten unter logischen Aspekten:




automount

automount ist ein (lokaler) NFS-Proxy-Server: Führt ein Pfad über eine automount-vnode, sorgt der Server dynamisch für den nötigen NFS-mount und liefert einen symbolischen Link, der von der automount-vnode in den NFS-mount zeigt:

Welche vnodes durch automount umgeleitet werden sollen, steht entweder in NIS-Maps oder, für besondere automount-Zuordnungen in Systemdateien wie fstab, exports und auch passwd.



Umwandlungen

Mit NetInfo kann man Systemdateien und eigene Daten wesentlich eleganter verwalten als in `flachen' Dateien für NIS.

NIS muß man aber zum Beispiel zur Verwaltung von Linux-Netzen unbedingt betreiben.

Entweder man implementiert einen neuen ypserv, der direkt mit NetInfo verhandelt, oder man setzt ypserv auf eine ndbm-Schnittstelle zu NetInfo oder man erzeugt wenigstens die NIS-Maps aus NetInfo.

Man sollte mindestens yppasswdd neu implementieren, damit yppasswd Paßwörter direkt in NetInfo ändert.

nypd

nypd beschafft Informationen mit niutil und nidump, wandelt sie mit gawk um, und speichert sie mit makedbm im Kayalog der NIS-Domain.

bootparams nidump
category.byhost niutil umformatieren
category.byname niutil reversieren
ethers.byaddr niutil umformatieren
ethers.byname niutil auf Aliase verteilen
group.bygid nidump umformatieren
group.byname nidump umformatieren
hosts.byaddr nidump umformatieren, plus localhost
hosts.byname nidump auf Aliase verteilen
mail.aliases nidump Map per sendmail
netgroup niutil komplexe Umformatierungen
netgroup.byhost niutil
netgroup.byuser niutil
netid.byname nidump komplexe Zusammenfassung
netmasks.byaddr niutil umformatieren
networks.byaddr nidump umformatieren
networks.byname nidump auf Aliase verteilen
passwd.byname nidump umformatieren, minus root
passwd.byuid nidump umformatieren, minus root
protocols.byname nidump auf Aliase verteilen
protocols.bynumber nidump umformatieren
publickey.byname leer?
rpcs.bynumber nidump umformatieren
services.byname nidump umformatieren
timezone.byname leer?



aim

aim geht davon aus, daß in einer Domain in /machines/host/disks im Stil von fstab die lokalen Platten beschrieben sind.

Daraus kann man dann /etc/fstab erzeugen -- OPENSTEP kann offenbar lokale Platten nicht über NetInfo montieren.

Außerdem kann man host/local /exports erzeugen, wenn man davon ausgeht, daß alle lokalen Platten zum lokalen Netz exportiert werden.

Aus den lokalen Platten aller (anderen) Rechner kann man host/local /mounts erzeugen, wenn man davon ausgeht, daß alle von anderen Rechnern exportierten Platten lokal mit automount und der -fstab Zuordnung angeboten werden.

Für Linux-Systeme sollten beide Tabellen in /etc/fstab stehen können.

Um nun allgemeine NIS-automount-Zuordnungen nachzubilden, kann man noch einen NetInfo-Baum verwenden, in dem man symbolischen Pfad, Host, und lokalen Pfad verknüpft.

Aus diesem Baum erzeugt man dann für jeden Host symbolische Links, die entweder in automount-Bereiche oder auf lokale Platten zeigen.