NIS steht für Network Information Service.
NIS wird auch als YP bezeichnet. YP steht für Gelbe Seiten.
NIS ist ein Suchdienst für eine Reihe von Datenbanken. Die Datenbanken können in diesen Fällen eine passwd-Datei, eine Gruppendatei, eine hosts-Datei usw. sein. Dies wird hauptsächlich als zentrales Repository verwendet, um alle Benutzernamen und Passwörter (z. B. /etc/passwd) zu speichern, und verschiedene Server können sich für diesen Server authentifizieren den Benutzernamen und das Passwort.
Dies ist sehr hilfreich für Systemadministratoren, die mehrere Server verwalten müssen. Anstatt ein Benutzerkonto für Ihre Benutzer auf jedem einzelnen Linux-Server zu erstellen, können Sie das Konto einfach auf einem Server erstellen, der für die Ausführung des NIS-Servers konfiguriert ist. Alle anderen Server können als NIS-Client konfiguriert werden, der sich gegenüber diesem zentralen NIS-Server-Repository authentifiziert.
Dies ist ein Schritt-für-Schritt-Tutorial, das die Installation und Konfiguration von ypserv NIS-Server und -Client erklärt.
YPServ steht für Yellow Pages Server.
Wenn bereits ein NIS-Server konfiguriert ist und Sie nur versuchen, einen Linux-Server mit einem vorhandenen NIS-Server zu verbinden, fahren Sie mit dem Abschnitt „NIS-Client konfigurieren“ weiter unten fort.
Wenn Sie sowohl NIS-Server als auch -Client installieren und konfigurieren, beginnen Sie mit dem ersten Schritt unten.
NIS-Serverkonfiguration
1. Überprüfen Sie die Portmap
Der Portmap-Server ordnet den DARPA-Port der RPC-Programmnummer zu. Für einen NIS-Client, der RPC-Aufrufe macht, um mit dem NIS-Server (der ein RPC-Server ist) zu kommunizieren, sollte Portmapper laufen.
Wenn der NIS-Server startet, informiert er den Portmapper, auf welchem Port er lauscht. Wenn ein NIS-Client einen NIS-Server kontaktiert, überprüft er zuerst den Portmapper und erhält die Portnummer, auf der der NIS-Server läuft, und sendet die RPC-Aufrufe an diese Portnummer.
Auf den meisten Linux-Distributionen wird portmap standardmäßig ausgeführt. Stellen Sie sicher, dass es ausgeführt wird und so konfiguriert ist, dass es beim Neustart des Systems gestartet wird.
# ps -ef | grep -i portmap rpc 3624 1 0 Feb23 ? 00:00:00 portmap root 16908 8658 0 10:35 pts/0 00:00:00 grep -i portmap # chkconfig --list | grep portmap portmap 0:off 1:off 2:off 3:on 4:on 5:on 6:off
2. Installieren Sie YPServ
Installieren Sie ypserv auf Ihrem Server mit den typischen Installationsmethoden für Ihre jeweilige Linux-Distribution (zum Beispiel:apt-get oder yum oder up2date usw.).
Wenn Sie es von der Quelle installieren möchten, laden Sie die ypserv-Quelle herunter.
Identifizieren Sie auf einem Redhat-System das ypserv-RPM von Ihrer Installations-CD und installieren Sie es wie unten gezeigt mit rpm.
# rpm -ivh ypserv-2.19-5.el5.i386.rpm Preparing... ########################################### [100%] 1:ypserv ########################################### [100%]
ypserv wird unter /usr/sbin/ypserv
installiert# whereis ypserv ypserv: /usr/sbin/ypserv /etc/ypserv.conf /usr/share/man/man8/ypserv.8.gz
3. Starten Sie ypserv
Überprüfen Sie, ob der ypserv wie unten gezeigt bei der Portmap registriert ist.
# rpcinfo -u localhost ypserv rpcinfo: RPC: Program not registered program 100004 is not available
Die obige Ausgabe zeigt an, dass entweder ypserv nicht installiert ist oder ypserv installiert, aber noch nicht gestartet wurde. Die folgende Schnellprüfung zeigt an, dass ypserv noch nicht gestartet wurde.
# chkconfig --list | grep yp ypbind 0:off 1:off 2:off 3:off 4:off 5:off 6:off yppasswdd 0:off 1:off 2:off 3:off 4:off 5:off 6:off ypserv 0:off 1:off 2:off 3:off 4:off 5:off 6:off ypxfrd 0:off 1:off 2:off 3:off 4:off 5:off 6:off # service ypserv status ypserv is stopped
Stellen Sie die NISDOMAIN in der Datei /etc/sysconfig/network wie unten gezeigt ein.
# vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=prod-db GATEWAY=192.168.1.1 NISDOMAIN=thegeekstuff.com
Starten Sie ypserv wie unten gezeigt.
# service ypserv start Setting NIS domain name thegeekstuff.com: [ OK ] Starting YP server services: [ OK ]
In der Datei /etc/ypserv.conf sind einige NIS-Server-Konfigurationsparameter festgelegt. Sie müssen die Standardwerte in dieser Datei jedoch nicht ändern.
4. NIS-Datenbank generieren
Sobald ypserv installiert und gestartet ist, ist es an der Zeit, die NIS-Datenbank zu generieren. Alle NIS-Datenbanken werden im Verzeichnis /var/yp gespeichert. Bevor Sie die Datenbank generieren, sehen Sie das Verzeichnis für Ihren Domainnamen nicht unter /var/yp.
# ls -l /var/yp total 36 drwxr-xr-x 2 root root 4096 May 18 2010 binding -rw-r--r-- 1 root root 16669 Oct 31 2008 Makefile -rw-r--r-- 1 root root 185 Jun 6 2007 nicknames
Generieren Sie die NIS-Datenbank mit dem Programm ypinit wie unten gezeigt. Sie müssen nur den Hostnamen Ihres NIS-Servers eingeben, um die Datenbank zu generieren.
# /usr/lib/yp/ypinit -m Please continue to add the names for the other hosts, one per line. When you are done with the list, type a . next host to add: prod-db next host to add: The current list of NIS servers looks like this: prod-db Is this correct? [y/n: y] y We need a few minutes to build the databases... Building /var/yp/thegeekstuff.com/ypservers... Running /var/yp/Makefile... gmake[1]: Entering directory `/var/yp/thegeekstuff.com' Updating passwd.byname... Updating passwd.byuid... Updating group.byname... Updating group.bygid... Updating hosts.byname... Updating hosts.byaddr... ... gmake[1]: Leaving directory `/var/yp/thegeekstuff.com' prod-db has been set up as a NIS master server. Now you can run ypinit -s prod-db on all slave server.
Nach dem Generieren der Datenbank können Sie sehen, dass ein neues Verzeichnis für Ihre Domain unter /var/yp erstellt wird, wie unten gezeigt.
# ls -l /var/yp total 44 drwxr-xr-x 2 root root 4096 Oct 8 10:59 thegeekstuff.com drwxr-xr-x 2 root root 4096 May 18 2010 binding -rw-r--r-- 1 root root 16669 Oct 31 2008 Makefile -rw-r--r-- 1 root root 185 Jun 6 2007 nicknames -rw-r--r-- 1 root root 10 Aug 31 10:58 ypservers
/var/yp/ypservers enthält den Namen Ihres NIS-Server-Hostnamens.
# cat /var/yp/ypservers prod-db
5. Überprüfen Sie die Installation
Überprüfen Sie die Installation des NIS-Servers, indem Sie überprüfen, ob mit dem NIS-Client-Programm ypcat auf die passwd-Datei zugegriffen werden kann.
# ypcat passwd No such map passwd.byname. Reason: Can't bind to server which serves this domain
Möglicherweise erhalten Sie die obige Fehlermeldung, da ypbind möglicherweise nicht auf Ihrem System ausgeführt wird. Starten Sie einfach ypbind und überprüfen Sie die Konfiguration.
# service ypbind start # ypcat passwd ramesh:R7EFEGJ1mxRGwVLVC.:401:401::/home/ramesh:/bin/bash john:QtlRW$Fx.uZvD:402:402::/home/john:/bin/bash
Wenn Sie das verschlüsselte passwd-Feld nicht in der ypcat-passwd-Ausgabe anzeigen möchten, setzen Sie MERGE_PASSWD im /var/yp/Makefile wie unten gezeigt auf false.
# vi /var/yp/Makefile MERGE_PASSWD=false
Nachdem Sie die obigen Schritte ausgeführt haben, zeigt der Befehl ypcat passwd nur ein „x“ in der passwd-Datei an.
# ypcat passwd ramesh:x:401:401::/home/ramesh:/bin/bash john:x:402:402::/home/john:/bin/bash
Jedes Mal, wenn Sie eine Änderung vornehmen (entweder Aktualisierungen am Makefile oder Änderungen an einer Datenbank). Wenn Sie beispielsweise einen neuen Benutzer hinzufügen oder ein vorhandenes Benutzerkonto ändern, sollten Sie Folgendes tun. Ohne dies werden die Änderungen auf keinem Ihrer NIS-Clients widergespiegelt.
# cd /var/yp # make
Ich empfehle, dass Sie dies zum Root-Cron-Job auf Ihrem NIS-Server hinzufügen, um es alle 15 Minuten auszuführen. Auf diese Weise müssen Sie sich nicht darum kümmern, dies jedes Mal manuell auszuführen, wenn Sie Änderungen an der NIS-Datenbank vornehmen.
NIS-Client-Konfiguration
Die folgenden Schritte müssen auf dem NIS-Client ausgeführt werden. Im obigen Beispiel haben wir den NIS-Server auf einem Server namens prod-db installiert. Wenn Sie möchten, dass ein anderer Linux-Server dev-db die /etc/passwd-Datei auf der prod-db zur Authentifizierung verwendet, müssen Sie die folgenden Schritte auf dem dev-db-Server (NIS-Client) ausführen.
6. Legen Sie den Domänennamen auf dem Client fest
Vergewissern Sie sich, dass der Domänenname auf diesem Server richtig eingestellt ist. Wenn dies nicht den richtigen Domainnamen zurückgibt. Führen Sie „domainname {your-domain}“ aus, um den Domainnamen auf dem Server festzulegen.
# domainname thegeekstuff.com
Der Domänenname-Befehl wird den Domänennamen vorübergehend festlegen. d.h. wenn Sie das System neu starten, ist der Domainname weg. Um den Domänennamen dauerhaft zu machen, aktualisieren Sie die Netzwerkdatei und setzen Sie den NISDOMAIN-Parameter wie unten gezeigt.
# cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=dev-db GATEWAY=192.168.1.4 NISDOMAIN=thegeekstuff.com
7. Legen Sie den NIS-Servernamen auf dem Client fest
Fügen Sie die folgende Zeile zur Datei /etc/yp.conf hinzu. Dies weist den NIS-Client an, dass der NIS-Server prod-db ist. Anstelle von prod-db unten können Sie auch die IP-Adresse des prod-db-Servers angeben.
# vi /etc/yp.conf domain thegeekstuff.com server prod-db
8. Starten Sie ypbind auf dem Client
ypbind ist ein NIS-Bindungsprogramm. Dies sucht nach einem NIS-Server für Ihre NIS-Domain und verwaltet NIS-Bindungsinformationen.
Stellen Sie sicher, dass ypbind auf dem NIS-Client-Server ausgeführt wird. Bei den meisten Linux-Distributionen ist ypbind bereits installiert. Wenn es nicht läuft, starten Sie es.
# ps -ef | grep ypbind # service ypbind start
Überprüfen Sie die Installation des NIS-Servers, indem Sie überprüfen, ob mit dem NIS-Client-Programm ypcat auf die passwd-Datei zugegriffen werden kann.
# ypcat passwd No such map passwd.byname. Reason: Can't bind to server which serves this domain
Möglicherweise erhalten Sie die obige Fehlermeldung, da ypbind möglicherweise nicht auf Ihrem System ausgeführt wird. Starten Sie einfach ypbind und überprüfen Sie die Konfiguration.
# service ypbind start # ypcat passwd ramesh:x.:401:401::/home/ramesh:/bin/bash john:x:402:402::/home/john:/bin/bash