13.5 NIS/NIS+
Benutzerverwaltung im Netzwerk
Bis hier ist die Benutzerverwaltung relativ einfach, da sie noch lokal ist. Schwieriger wird es im Netzwerk. Dort möchte man möglichst nur eine Datenbasis für alle Benutzer und Gruppen pflegen und nicht die Einstellungen für jeden Server oder eventuell sogar jeden Client extra verwalten.
13.5.1 Funktionsweise
Eine Möglichkeit, solche Daten zentral zu verwalten, ist der Network Information Service (NIS). NIS ist ein Verzeichnisdienst, der Konfigurationswerte wie Benutzerdaten oder Rechnernamen im Netzwerk verteilt. Es wurde ursprünglich von Sun Microsystems unter dem Namen »Yellow Pages« (YP) entwickelt. Jedoch ist diese Bezeichnung in Großbritannien durch das Markenrecht geschützt, [Fn. Auch in Deutschland kennt man ja in einem anderen Zusammenhang die »Gelben Seiten«, in denen Gewerbetreibende verzeichnet sind.] daher musste die Umbenennung in NIS erfolgen.
Ein Verzeichnisdienst ist eine im Netzwerk verteilte (meist hierarchische) Datenbank.
Intern nutzen NIS wie auch seine sicherere Variante NIS+ sogenannte Remote Procedure Calls (RPC). Damit können Funktionsaufrufe auf fremden Rechnern – in der Regel synchron – ausgeführt werden. Wenn ein Client eine solche entfernte Funktion aufruft, so wartet er, bis der Server das Ergebnis zurücksendet. Unter Linux übernimmt der portmap-Dienst die Koordination der angebotenen Funktionen. Jedes Serverprogramm, das RPC-Dienste anbieten will, muss sich demzufolge beim portmap-Dienst anmelden. Ein Client greift dann über TCP- beziehungsweise den UDP-Port 111 auf den portmap zu und kann dort dann die gewünschten Funktionen ausführen lassen.
Starten von RPC
[»]Um RPC zu verwenden, müssen Sie nur den portmap-Dienst starten. Der Dateiname dieses Programms lautet unter einigen Systemen jedoch nicht unbedingt portmap. Unter Slackware-Linux wird zum Beispiel das Programm rpc.portmap und unter Solaris 2.5 rpcbind gestartet. Um zu überprüfen, ob der Portmapper läuft, sollte eine rpcinfo-Abfrage genügen.
Listing 13.29 Das Programm rpcinfo
# rpcinfo -p
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
NIS selbst ist viel eher ein Protokoll und weniger eine Software, da es verschiedene Implementierungen für die einzelnen Unix-Systeme gibt.
NIS kann aber nicht nur Account-Daten netzweit verfügbar machen, sondern kümmert sich auch darum, einige Konfigurationsdateien zu übertragen. Dazu gehören:
- /etc/group
- /etc/passwd
- /etc/ethers
- /etc/hosts
- /etc/networks
- /etc/protocols
- /etc/services
- /etc/aliases (enthält E-Mail-Aliase)
NIS betrachtet diese Dateien intern als Datenbanken, so genannte NIS-Maps. Die vom Server angebotenen NIS-Maps erfragt man mit dem Befehl ypcat -x.
Wir werden uns im Folgenden nur mit NIS und nicht mit NIS+ auseinandersetzen. Dies hat den Grund, dass NIS+ auf den meisten Linux- und Unix-Systemen nicht verfügbar ist und wir selbst auch immer nur NIS-Systeme verwendet haben. [Fn. Falls Sie sich für die Administration von NIS+ (unter Solaris) interessieren, sei Ihnen [HenMrks00A] und bedingt auch [Hertzog02A] empfohlen.]
13.5.2 Konfiguration der NIS-Clients
Der NIS-Client wird auf eine sehr einfache Weise eingerichtet: Man setzt nur den NIS-Domainnamen. Dieser ist unabhängig vom DNS-Domainnamen zu betrachten, denn beide Dienste verwenden ein ganz unterschiedliches Protokoll.
Der NIS-Domainname wird mit dem Kommando domainname konfiguriert. In den meisten Fällen wird ein ähnlicher (oder gleicher) Name wie beim DNS-System verwendet. Wir empfehlen diese Vorgehensweise, da man sich so nur einen Hostnamen pro Rechner und einen Domainnamen pro Subnetz merken muss.
Unser Netzwerk heißt »sun«, was nichts mit Sun Microsystems zu tun hat, sondern damit, dass die meisten Hosts die Namen von Planeten bekommen haben.
Listing 13.30 Setzen und Abfragen des NIS-Domainnamens
# domainname sun
# domainname
sun
Um das Setzen des NIS-Domainnamens zu automatisieren, genügt es in der Regel, ihn in der Datei /etc/domainname einzutragen. Da die Authentifizierung via NIS erfolgen soll, wird, um dies zu signalisieren, in die /etc/shadow bzw. bei BSD in die /etc/master.passwd unter die bestehenden Account-Daten die folgende Zeile eingetragen:
+:*::::::::
ypbind
Um die Konfiguration zu testen, startet man das System am besten neu. So weiß man gleich, ob der Rechner automatisch ypbind (das Tool, das via Broadcast den NIS-Server lokalisiert) aufruft, was man zur Laufzeit aber auch manuell erledigen kann.
[»]In der Regel sollten noch Veränderungen an der Datei /etc/nsswitch.conf vorgenommen werden, um den Client anzuweisen, bestimmte Daten über NIS und nicht lokal zu beziehen. Das Schlüsselwort nis muss in diesem Fall vor dem Schlüsselwort files stehen. Für die Datei /etc/protocols würde ein Eintrag beispielsweise folgendermaßen aussehen:
Listing 13.31 Ausschnitt einer nsswitch.conf-Datei
protocols: nis files
13.5.3 Konfiguration des NIS-Servers
Auch auf dem Server wird zunächst der NIS-Domainname gesetzt. Der Server wird anschließend im Verzeichnis /var/yp mit make initialisiert. [Fn. Unter OpenBSD verwendet man ypinit -m.]
Server initialisieren
Auf dem Server werden schließlich die Dienste ypserv und ypbind gestartet. Von nun an können Clients über RPC (Remote Procedure Calls) Anfragen an den Server senden.
13.5.4 Testen der Konfiguration
Nun sollte ypwhich unseren Server als NIS-Server anzeigen, und die bereitgestellten Dateien können via ypcat <Dateiname> vom Server geladen werden. Ist dies nicht der Fall, sollte zunächst mit rpcinfo und pgrep überprüft werden, ob RPC funktioniert und ypserv und ypbind auf dem Server laufen. Falls dies so ist und trotzdem Probleme auftreten, hilft ein Blick in die Logdateien weiter.
13.5.5 Sicherheit
NIS selbst ist recht unsicher, da Systemdateien während der Übertragung abgefangen werden können. Es empfiehlt sich daher, ein VPN (virtuelles privates Netzwerk) und/oder Kerberos einzusetzen. Mehr zu diesen beiden Themen erfahren Sie in unserem Buch »Praxisbuch Netzwerksicherheit« ([PloeWend07A]).
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.