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.
![]()

| 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 |
| 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 |
![]()
Eine Vielzahl anderer Manager bearbeitet die gleichen Daten unter logischen Aspekten:
![]()

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