Network Information Service: NIS

Willemers Informatik-Ecke

NIS zentralisiert Konfigurationsdateien

NIS (Network Information Service) hat die Aufgabe, in einem UNIX Netzwerk die Informationen auf allen Maschinen konsistent zu halten. NIS verwaltet Konfigurationsdateien. Dadurch ist es auch nur für Maschinen mit UNIX interessant, da andere Systeme beispielsweise mit der /etc/passwd wenig anfangen können.

Die Konfigurationsdateien werden auf dem Zentralrechner, dem Master, in Dateien umgewandelt, die einen schnellen Zugriff erlauben. Dazu muss für jedes Suchkriterium eine eigene Datei angelegt werden. Anschließend kann der Client seine Informationen per Netz vom NIS holen. Da die NIS-Informationen auf dem Netz nicht besonders gesichert sind, eignet sich NIS nicht für Netze mit besonderen Sicherheitsanforderungen.

In den meisten Fällen wird man die Passwortdatei unter die Verwaltung durch NIS stellen, um die Benutzerkonten der Anwender konsistent zu halten. Es wird also die /etc/passwd zentralisiert. Insbesondere in einem Netz, das auch mit NFS arbeitet wird dies wichtig, da der Eigentümer der Dateien über die Benutzer-ID festgehalten wird. Dazu kommt der Komfort, auf allen Rechnern im Netz das gleiche Passwort zu haben und es nur an einer Stelle verwalten zu müssen.

NIS hat also seine besondere Bedeutung für Netze mit UNIX-Systemen, um nicht jeden Rechner einzeln verwalten zu müssen. Die Namen der Befehle von NIS beginnen meist mit yp. Das hängt damit zusammen, dass Sun NIS ursprünglich yellow pages, also Gelbe Seiten nennen wollte. Die britische Telefongesellschaft hatte allerdings ein Markenrecht auf dem Begriff, so dass Sun es auf NIS umnennen musste.

Aufbereiten der Dateien

Makefile als Konfigurationstool

Im ersten Schritt muss festgelegt werden, welche Dateien unter NIS gestellt werden. Diese Dateien werden dann in die so genannten Maps überführt. Der zentrale Befehl dazu lautet makedbm, der allerdings normalerweise nicht direkt aufgerufen wird, sondern über ein Makefile, das sich im Verzeichnis /var/yp befindet. Hier werden später auch die Maps liegen. Ein Makefile ist eine editierbare Datei zum Generieren bestimmter Zieldateien und wird normalerweise in der Programmierung verwendet

Ändern Sie die Datei Makefile mit Ihrem Liebslingseditor. Darin findet Sie hinter dem Label all: alle Dateien, die für das NIS umgestellt werden sollen. Mit dem Kommentarzeichen # können Sie die Dateien ausschließen, die Sie nicht mit NIS in dieser Domäne verwalten wollen.

# If you don't want some of these maps built, feel free to 
# comment them out from this list.

#all: passwd group hosts rpc services netid protocols \ # netgrp mail shadow publickey networks ethers \ # bootparams printcap amd.home auto.master auto.home \ # auto.local passwd.adjunct timezone locale netmasks

all: passwd group rpc services netid

Nachdem das Makefile angepasst ist, werden durch einen Aufruf von make die Map-Dateien erstellt. Auf manchen Systemen gibt es auch ein spezielles ypmake.

make all

Anschließend sollten im Verzeichnis /var/yp die Maps zu finden sein, mit denen NIS die Anfragen später beantworten wird.

NIS-Server starten

Im nächsten Schritt wird die NIS-Datenbank für den Master initialisiert.

gaston# cd /var/yp
gaston# domainname willemer.edu
gaston# ypserv
gaston# /usr/lib/yp/ypinit -m

At this point, we have to construct a list of the hosts which will run NIS servers. gaston.willemer.edu is in the list of NIS server hosts. Please continue to add the names for the other hosts, one per line. When you are done with the list, type a <control D>. next host to add: gaston.willemer.edu next host to add: The current list of NIS servers looks like this:

gaston.willemer.edu

Is this correct? [y/n: y] y We need some minutes to build the databases... Building /var/yp/willemer.edu/ypservers... Running /var/yp/Makefile... gmake[1]: Entering directory `/var/yp/willemer.edu' Updating passwd.byname... Updating passwd.byuid... Updating group.byname... Updating group.bygid... Updating rpc.byname... Updating rpc.bynumber... Updating services.byname... Updating services.byservicename... Updating netid.byname... gmake[1]: Leaving directory `/var/yp/willemer.edu' gaston#

ypinit

Nach dem Start von ypinit erbittet das Programm um die Angabe aller NIS Server. Der eigene Rechner erscheint. Hier kann man weitere Slave-Server eintragen, die bei einem Ausfall des Masters einspringen. Wenn keine weiteren NIS Server in der Domäne arbeiten sollen, wird die Eingabe mit ctrl-D abgeschlossen.

Der Passwortserver

Damit müsste dieser NIS Server bereits Anfragen beantworten können. Passwörter haben eine besondere Position. Man sollte sie auf dem Client ändern können und damit die Änderung bereits auf dem Masterserver aktualisiert haben. Das erledigt der Passwortserver. Er wird wie folgt auf dem Masterserver gestartet:

rpc.yppasswdd -s /etc/yp/shadow -p /etc/yp/passwd -e chsh
ypserv

Nun sollte ein Client mit dem Aufruf von yppasswd sein Passwort domänenweit ändern können.

Überprüfen des Servers

NIS basiert auf dem RPC (Remote Procedure Call), der durch den Prozess portmap zur Verfügung gestellt wird. Dieser Prozess wird bei jedem auf RPC basierendem Server benötigt, da er die Umsetzung der Funktionsnummern durchführt. Das Programm rpcinfo hilft zu prüfen, ob der NIS-Server aktiv ist und sauber eingebunden ist.

gaston # rpcinfo -u localhost ypserv

program 100004 version 1 ready and waiting program 100004 version 2 ready and waiting

gaston #

So oder ähnlich sollte das System reagieren.

Starten eines NIS-Clients

Zunächst muss die Domäneninformation stimmen. Dies kann durch Aufruf des Befehls domainname erfolgen. Übrigens ist der Domainname des NIS unabhängig von dem des DNS. Anschließend wird der NIS Client Dämon gestartet. Er heißt ypbind.

silver# domainname willemer.edu
silver# ypbind -broadcast

Diese beiden Befehle sollten in den rc-Dateien des Systems stehen, damit das NIS nach dem Start bereits zur Verfügung steht. Wer Daten aus der /etc/passwd per NIS ermitteln will, sollte als letzten Eintrag die folgende Zeile eintragen.

+::::::

Anschließend kann mit dem Befehl ypcat getestet werden, ob die Verteilung der passwd durch den NIS-Server funktioniert.

silver# ypbind -broadcast
silver# ypcat passwd

Der Befehl ypcat muss eine Liste aus von Einträgen der passwd-Datei liefern, dann ist alles in Ordnung.

Diese Seite basiert auf Inhalten aus dem Buch Arnold Willemer: Wie werde ich UNIX-Guru
Verlagsrechte bei galileo computing


Homepage (C) Copyright 2002 Arnold Willemer