Linux NetMag
Titel: NIS - Gelbe Seiten
URL: http://www.linuxnetmag.com/de/issue6/m6nis1.html
Artikel vom: 7.4.2001
Autor: Ronny Ziegler


NIS-Installation Will man sich bei einem Netzwerk an jedem Rechner mit gleichem Usernamen und Passwort einloggen, benötigt man die Gelben Seiten...


Wer braucht NIS?

Hat man mehrere Linux-PCs in einem Netzwerk, und möchte man sich von jedem PC aus mit dem selben Usernamen und Passwort einloggen, wird es schnell arbeitsaufwendig, die User auf jedem einzelnen PC einzurichten. Sollen zusätzlich noch alle User auf den verschiedenen PCs selbe Gruppen- und User-IDs besitzen, um von überall mittels NFS auf Ihre Daten zugreifen zu können, wünscht man sich schnell eine zentrale Konfigurationsmöglichkeit aller User.
NIS bietet eine solche zentrale Administration der Useraccounts.

NIS steht für Network Information Service und ist teilweise auch unter dem Namen YP (YellowPages) zu finden. Aus rechtlichen Gründen, darf dieser Name offiziell nicht mehr benutzt werden, und der Nachfolger von NIS heißt nun nur noch NIS+.

Wie funktioniert NIS

Auf einem speziellen Rechner im Netzwerk (möglichst ein ständig laufender Server) läuft ein NIS-Server. Auf diesem Server sind alle User und Gruppen eingetragen (in den Dateien /etc/passwd und /etc/group), die auf allen anderen Rechnern im Netz erhältlich sein sollen.
Bootet nun einer der Clients im Netzwerk, so fragt er beim NIS-Server an, was neben den in seiner eigenen /etc/passwd eingetragenen Usern noch für Accounts bereitgestellt werden müssen. Außerdem kann dem Client mitgeteilt werden, wo die jeweiligen Home-Verzeichnisse der User zu finden sind. Wenn man alle Home-Verzeichnisse nun zentral auf einem NFS-Server lagert, findet man unabhängig vom jeweiligen Rechner, an dem man sich einloggt, immer sein aktuelles Homeverzeichnis, bzw. seinen eigenen graphischen Desktop vor.

Eine Antwort auf die Frage, ob man nun NIS oder den Nachfolger NIS+ benutzen sollte, hängt sehr von dem Sichherheitsbedürfnis ab. NIS bietet keine Unterstützung für shadow-Passwörter, NIS+ hingegen ist um einiges komplizierter zu konfigurieren.
Wir werden deshalb hier nur die Installation von NIS erklären. Weitere Hinweise zur Benutzung von NIS+ findet man z.B. unter http://www.muc.de/~ralfl/nisplus/faq.html.

Installation des Servers

Zunächst benötigt man das Programm ypserv, welches sich im Quellcode unter ftp://ftp.kernel.org/pub/linux/utils/net/NIS/ herunterladen läßt, zumeist aber schon zusammen mit der installierten Distribution kommt. Notfalls muß man es dann noch nachinstallieren (unter SuSE die Pakete ypserv.rpm und ypclient.rpm in der Rubrik n1).

Damit der Server beim Booten automatisch gestartet wird, muß noch der Eintrag

  /usr/sbin/ypserv
  
in die /sbin/init.d/boot.local eingetragen werden, oder man erstellt ein entsprechendes Init-Skript.
SuSE-Benutzer können mittels Yast unter
  Administration des Systems
         -> Konfigurationsdatei verändern
  
die Umgebungsvariable START_YPSERV auf yes stellen, um selbiges Resultat zu erhalten.

Zum Testen starten wir ypserv erstmal per Hand:

  >> ypserv
  
und testen den Server danach mittels
  >> rpcinfo -u localhost ypserv
  
Als Antwort sollte man dann etwa folgende Ausgabe erhalten:
  program 100004 version 2 ready and waiting
  
Als nächstes muß nun noch der NIS-Domainname eingestellt werden. Dieser ist unabhängig vom DNS-Domainnamen, kann aber auch identisch zu diesem gewählt werden (was sich auch empfiehlt, um sich den NIS-Domainnamen besser merken zu können).
Ist der DNS-Name des Servers beispielsweise server.meinnetz.de, so stellt man NIS-Domainnamen ein mit dem Befehl
  >> ypdomainname meinnetz.de
  
SuSE-Benutzer können diese Einstellung wie oben mittels Yast einstellen. Die zugehörige Variable hat den Namen YP_DOMAINNAME.

Wie bereits erwähnt, unterstützt NIS nicht die Benutzung von shadow-Passwörtern. Da wohl alle neueren Distributionen standardmäßig diese Passwörter benutzen, muß erstmal die Passwort-Datei geändert werden.
Die Idee hinter shadow-Passwörtern ist folgende: Da bei einem Login des Users erst die Existenz des Benutzernamens geprüft werden muß, schaut das Login-Programm in die Datei /etc/passwd. Dort werden die Daten aller User gespeichert. Nur muß diese Datei dann auch vom jeweiligen User lesbar sein. Deshalb ist es ungünstig auch die Passwörter in dieser Datei zu speichern, selbst dann, wenn sie verschlüsselt abgelegt werden. Deshalb hat man die zu den Usernamen gehörigen Passwörter in einer zusätzlichen Datei /etc/shadow abgelegt, die nur noch für den Superuser lesbar ist.

In der Datei /etc/passwd befinden sich daraufhin nur noch Einträge der Form

  frank:x:506:100:Frank Zander:/home/frank:/bin/bash
  
wobei die Einträge folgende Informationen getrennt durch Doppelpunkte enthalten: Normalerweise steht an der zweiten Stelle das Passwort des Benutzers, dieses wird bei Shadow-Passwörtern nun in die zusätzliche Datei /etc/shadow verlegt, wo der zugehörige Eintrag dann folgendermaßen aussehen könnte:
  frank:KjQpGgsH/XoRa:10990:0:10000::::
  
Wichtig hierbei ist nur der zweite Eintrag, der dem Passwort in verschlüsselter Form entspricht.

Um nun einen Useraccount auf dem NIS-Server zu aktivieren, muß man zunächst das shadow-Passwort deaktivieren. Dies funktioniert ganz einfach, indem man aus der Datei /etc/shadow das verschlüsselte Passwort des entsprechenden Users kopiert und an die Stelle des x in der Datei /etc/passwd kopiert.

Hat man dies einmal für alle User durchgeführt, kann man diese Daten dem NIS-Server mitteilen. Man beachte aber, daß man in Zukunft, falls man noch nachträglich Accounts auf dem Server generiert, immer wieder das shadow-Passwort in die /etc/passwd-Datei kopieren muß.

Um nun die Passwörter, User-IDs usw. dem NIS-Server mitzuteilen, führt man den Befehl

  >> ypmake
  
aus. Dies erstellt daraufhin Dateien im Verzeichnis /var/yp/<NIS-DOMAINNAME>/.

Damit auch in Zukunft der NIS-Server immer eine aktuelle Version der User-Daten anbieten kann, sollte man diesen Befehl periodisch mittels eines cronjobs ausführen lassen.
Dafür sollte in der crontab des users root beispielsweise der Eintrag

  0	4,8,14,20,23	*	*	*	ypmake >/dev/null
  
stehen.
Die crontab ändert man mittels des Befehls
  >> crontab -e
  
während man über die Umgebungsvariable $EDITOR den zum Editieren benutzenden Texteditor einstellen kann, z.B.
  >> export EDITOR=emacs
  
Der NIS-Server ist nun konfiguriert, im nächsten Schritt wenden wir uns den Clients zu.

Client Installation

Unter SuSE verläuft die Konfiguration eines NIS-Clients ausgesprochen unkompliziert. Mittels Yast kann man die notwendigen Einstellungen vornehmen. Unter

  Administration des Systems
         -> Konfigurationsdatei verändern
  
müssen die folgenden Umgebungsvariablen eingestellt werden: Für RedHat-Benutzer kann die NIS-Konfiguration beispielsweise mittels linuxconf erledigt werden, oder man konfiguriert die norwendigen Dateien per Hand:

Zum Starten des NIS-Clients benötigt man einen Eintrag der Form

  ypdomainname meinnetz.de
  /usr/sbin/ypbind
  
in der Datei /sbin/init.d/boot.local oder man schreibt ein entsprechendes Init-Skript.

Als letztes muß nun noch die Passwort-Datei und die Gruppen-Datei angepasst werden.
Dafür schreibt man ans Ende der Datei /etc/passwd den Eintrag

  +::::::
  
Dieser Eintrag importiert nun zusätzlich zu den normalerweise vorhandenen Usern auch alle User des NIS-Servers auf den NIS-Client. Es sind aber auch Variationen möglich, so können auch nur einzelne User erlaubt werden, z.B. mittels
  +miquels:::::::
  
wird nur der miquesl hinzugefügt. Mittels
  -username
  
können auch einzelnen Usern der Zugriff auf dem jeweiligen Rechner verboten werden. Weitere Möglichkeiten zur Konfiguration der Passwort-Datei findet man in der NIS-Howto unter http://www.linuxdoc.org/HOWTO/NIS-HOWTO/.

Um nun nicht nur die User auf dem Client zu importieren, sondern auch die zugehörigen Gruppen, muß man in der Datei /etc/group einen ähnlichen Eintrag vornehmen:

  +:::
  
Die Konfigurationsmöglichkeiten hierbei sind analog zu den Einträgen in der /etc/passwd

Home-Verzeichnisse

Soll nun jeder User an jedem PC sein eigenes Home-Verzeichnis wiederfinden, so muß auch das Home-Verzeichnis zentral auf dem Server gelagert werden, und dann beim Client übers Netz eingebunden werden.
Für derartige Aufgaben empfiehlt sich der Einsatz des Netzwerk-Datei-Systems (NFS). Dafür muß auf dem Server ein NFS-Server-Daemon laufen (siehe hierfür die Anleitung zur jeweiligen Distribution, wir werden die Konfiguration eines NFS-Server nicht an dieser Stelle behandeln).
Die Datei /etc/exports auf dem Server sollte folgenden Eintrag beinhalten:

  /home		*.meinnetz.de(rw)
  
Dieser Eintrag bewirkt, daß das Verzeichnis /home mit allen darin enthaltenen Unterverzeichnissen von den Clients im Netz meinnetz.de gemountet werden kann.
In Klammern wird daraufhin die Rechteverteilung eingestellt, mit denen die Clients auf die gemounteten Verzeichnisse zugreifen können.
Der Eintrag rw bewirkt, daß die User an den Clients in das Home-Verzeichnis lesen und schreiben können, was äußerst sinnvoll ist.

Auf den Clients muß nun schon während des Bootens das Home-Verzeichnis eingebunden werden, dafür muß auf allen Clients ein Eintrag der folgenden Form in der Datei /etc/fstab angehängt werden:

  servername:/home                 /home             nfs     defaults        0 0
  
Der erste Eintrag gibt an, auf welchem Rechner der NFS-Server läuft, dann welches Verzeichnis gemountet werden soll, und als drittes, unter welchem Verzeichnis das NFS-Directory lokal eingefügt werden soll. nfs zeigt dem Client, daß es sich dabei um kein lokales Verzeichnis handelt. Die letzten Einträge betreffen die Zugriffsrechte und Festplattenchecks und können einfach übernommen werden.

Um ein Verzeichnis mounten zu können, muß das betreffende Verzeichnis lokal leer sein. Deshalb sollte man die bisherigen Home-Verzeichnisse auf dem Client erstmal umbenennen und ein neues leeres Verzeichnis erstellen:

  >> mv /home /home_orig
  >> mkdir /home
  
Um das Mounten des Home-Verzeichnisses zu testen, führt man dann den Befehl
  mount servername:/home /home
  
aus. Daraufhin sollte das Home-Verzeichnis des Servers auch auf dem Client unter /home sichtbar sein.

Loggt sich ein User nun auf dem Client ein, befindet er sich immer in seinem eigenen Home-Verzeichnis, unabhängig davon, auf welchem Rechner er sich einloggt.