Wissenssammlung
fuer Linux, U.n.i.x, Netzwerke ...
Fachliche Korrektheit ist nicht gewaehrleistet, Vollstaendigkeit eh net..
.
Network Information Service (NIS) fuer Solaris
...
..
.
Autor: Thomas Ulrich Nockmann (August ©2001)
Der von Sun entwickelte NIS-Namensservice verwaltet in einem lokalen Netz Dateien zentral; Rechner unterschiedlicher Hersteller koennen im U.n.i.x-Bereich mit NIS ueber gemeinsame Verwaltungsdateien konfiguriert werden.
Sicherheitsanforderungen zu verwirklichen ist unter NIS das Hauptproblem, da Passwoerter immer unverschluesselt ueber dass Netz uebertragen werden.
Seit Solaris 7 ist nicht nur die Clientfunktionalitaet fest in das OS integriert, sondern auch die Serverfunktionalitaet, die in den Softwarepaketen SUNWypr und SUNWypu enthalten ist. Das Paket SUNWsprot ...
Aufsetzen eines NIS-Master-Servers
Erweitern eines NIS-Master-Servers
Veraendern der verwalteten Informationen
Aufsetzen eines NIS-Slave-Servers
Nachtraegliches Aufsetzen eines NIS-Slave-Server
Update eines NIS-Slave_Servers
Befehle zur Erzeugung der NIS-Datenbank
...
...
Befehle zur NIS-Administration
...
...
...
...
...
...
...
Rechner werden zu Verwaltungsgruppen, also zu Domains zusammengeschlossen und zentral ueber einen Server verwaltet.
Dazu ist es notwendig, jeden Rechner mittels domainname-Befehl (# domainname <Name der Domain>) einer Domain zuzuordnen. Statisch geschieht dieses durch einen Eintrag in der zu erstellenden Datei /etc/defaultdomain (#domainname > /etc/defaultdomain).
Es koennen mehrere NIS-Domains in einem Netz exestieren.
Der NIS-Namensservice basiert auf dem Client-Server-Prinzip. Eine Domain kann ueber mehrere Subnetze aufgebaut sein, wobei der NIS-Master an der Schnittstelle zwischen den Subnetzen plaziert seien sollte und ein jedes Subnetz einen Slave-Server besitzen sollte.
In jeder Domain verwaltet ein Master-Server zentral die Quellen der Dateien, die als Textdateien (ASCII) zur Verfuegung stehen muessen, aus der die NIS-Datenbank aufgebaut ist.
Bei Aenderungen des Inhalts der NIS-Datenbank erneuert der NIS-Master-Server die komplette Map und verschickt diese an seine etwaigen Slave-Server. Der NIS-Master-Server ist zugleich sein eigener Client und verwaltet sich selbst.
Aufsetzen eines NIS-Master-Servers
Als naechstes werden die Quelldateien, die in die NIS-Datenbank uebernommen werden sollen und die in der Datei /var/yp/Makefile unter der Zielmenge all aufgelistet sind, gesammelt, in noch zu erstellenden, ebenfalls in der Datei /var/yp/Makefile aufgefuehrte, Verzeichnisse kopiert und ihren Anforderungen entsprechend editiert.
Von besonderer Bedeutung sind die folgenden im Makefile angegebenen Verzeichnisse:
- das in der Variablen DIR festgelegte Domainverzeichnis
- das in der Variablen PWDIR festgelegte Passwortverzeichnis; in dieses Verzeichnis werden die
angepassten Dateien /etc/passwd und /etc/shadow kopiert, aus denen eine passwd-Datei generiert wird.
Sie beinhalten lediglich die Eintraege der ueber NIS verwalteten Benutzer.
Es ist ausdruecklich darauf zu achten, dass der Benutzer root entfernt wurde.- das in der Variablen ALIASES festgelegte Emailalias-Verzeichnis
Ferner wurde im, in der Variablen DIR festgelegten Verzeichnis ($(DIR)/), aus Sicherheitsgruenden ein weiteres Verzeichnis security angelegt,
in das die Dateien auth.attr, exec.attr, prof.attr, user.attr und audit.user kopiert wurden und die Pfaddefinitionen fuer diese Dateien im
gesamten Makefile angepasst. Beispiel: $(DIR)/auth.attr --> $(DIR)/security/auth.attr
Weiter ist der Name der Domain festzulegen.
# domainname <Name der Domain>
und diese statisch durch einen Eintrag in der zu erzeugenden Datei /etc/defaultdomain festzusetzen.
# domainname > /etc/defaultdomain
Schliesslich werden, falls noch nicht geschehen, o.g. Anpassungen im Makefile vorgenommen.
Sind obrige Vorbereitungen abgeschlossen, wird aus dem Verzeichnis /var/yp das Programm /usr/ccs/bin/make aufgerufen, welches anhand der im Makefile beschriebenen Regeln eine leere NIS-Datenbank erzeugt und ein Verzeichnis /var/yp/<Name der Domain> anlegt, indem sich o.g. Datenbank, bzw. Dateien derselbigen befinden.
Jetzt folgt das eigendliche Initialisieren des NIS-Master-Server durch die Eingabe von:
# ypinit -m
Der Name des lokalen Rechners wird automatisch als NIS-Master-Server gesetzt, weitere NIS-Slave-Server koennen angegeben werden,
wobei auf die Reihenfolge, welche fuer das Anbinden der Clients (Binding) wichtig ist, der NIS-Slave-Server zu achten ist.
Die Hostnamen der NIS-Slave-Server muessen in der lokalen /etc/hosts des NIS-Master-Servers stehen.
Um die Quelldateien in die NIS-Datenbankdateien einzulesen, wird von dem Makefile der makedbm-Befehl angewandt.
Nach erfolgter Ueberpruefung und g.g.f. Editierung von /etc/nsswitch.conf werden die NIS-Hintergrundprozesse durch Aufruf des
Skripts /usr/lib/netsvc/yp/ypstart gestartet.
Folgende NIS-Hintergrundprozesse wurden gestartet:
/usr/lib/netsvc/yp/rpc.ypupdated
/usr/lib/netsvc/yp/ypbind
/usr/lib/netsvc/yp/ypxfrd
/usr/lib/netsvc/yp/ypserv
/usr/lib/netsvc/yp/rpc.yppasswdd
Zum Schluss sollte ein Neustart des Systems durchgefuehrt werden, um sicherzustellen, dass keine Konfigurationsangaben vergessen wurden und das System als NIS-Master-Server und NIS-Client ordnungsgemaessdort ein entsprechender Eintrag fuer die all-Variable gesetzt werden und g.g.f. ein Eintrag als Abschnitt fuer die Umsetzung der Datei vorgenomm en werden, sofern dieser nicht standardmaessig vorhanden ist.
Anschliessend ist die entsprechende Quelldatei in das DIR-Verzeichnis zu kopieren.
Vorhandenen NIS-Slave-Servern ist zuvor mit dem makedbm-Befehl eine Leerdatei zuzufuegen, da diese kein Update auf sich nicht in ihren NIS-Datenbanken vorhandenen Dateien durchfuehren koennen.
Anschliessend kann auf dem NIS-Master-Server mit dem Befehl make <Name der Map> die Datei in seine NIS-Datenbank uebernommen werden und an alle NIS-Slave-Server , die auf dem NIS-Master-Server in der Datei /var/yp/<Name der Domain>/ypservers aufgelistet sind, durch das automatische yppush weitergeleitet werden.
Beispiel:
NIS-Slave-Server: #makedbm /dev/null /var/yp/<Name der Domain>/timezone.byname
NIS-Master-Server: # make timezone
-A--> updated timezone
pushed timezone
Veraendern der verwalteten Informationen
Um den Inhalt einer NIS-Datenbankdatei zu aendern, muss zuerst auf dem Server die Quelldatei editiert werden und dann aus dem Verzeichnis /var/yp heraus der Befehl /usr/ccs/bin/make aufgerufen werden, der durch das automatische Ausfuehren des push-Befehls den NIS-Datenbankbestand der NIS-Slave-Server aktuallisiert.
Ein NIS-Slave-Server entlastet den NIS-Master-Server und haelt im Falle eines Ausfalls des NIS-Master-Servers den Netzwerkbetrieb aufrecht; Veraenderungen der von NIS verwalteten Daten sind in diesem Fall jedoch nicht moeglich.
Clients koennen sich gleichberechtigt sowohl an den NIS-Master-Server als auch an einen NIS-Slave-Server wenden.
Ist der Client zugleich auch NIS-Slave-Server, wird das Netzwerk von seinen Anfragen entlastet.
Der lokale Rechnerbetrieb ist im Falle eines totalen Netzwerkausfalls gewaehrleistet.
Aufsetzen eines NIS-Slave-Servers
Auf dem NIS-Slave-Server wird ebenfalls die NIS-Serversoftware in Form der Pakete SUNWypr und SUMWypu installiert. Eine Installation des Paketes SUNWsprot, wie im Falle eines NIS-Master-Servers is fuer NIS-Zwecke nicht erforderlich.
Die Datei /var/yp/Makefile ist umzubennenen und darf auf einem NIS-Slave-Server auf keinen Fall abgearbeitet werden (make).
Dem zukuenfigem NIS-Slave-Server ist ebenfalls eine Domain zuzuordnen, analog der Vorgehensweise des NIS-Master-Servers.
# domainname <Name der Domain>
und diese statisch durch einen Eintrag in der zu erzeugenden Datei /etc/defaultdomain festzusetzen.
# domainname >/etc/defaultdomain
und es folgt das eigendliche Initialisieren des NIS-Slave-Server durch die Eingabe von:
# ypinit -c <--E- Namen der NIS-Servers angeben bei Aufforderung
Jetzt wird der NIS-Client-Hintergrundprozess ypbind durch den Aufruf (des Skriptes <--???? )
# /usr/lib/netsvc/yp/ypstart
-A--> Starting NIS(YP server) services: ypbind done.gestartet.
Nun ist der Rechner Mitglied der Domain und kann von seinem NIS-Master-Server die NIS-Maps abfragen.
Als naechstes wird der NIS-Client zum NIS-Slave-Server umkonfiguriert, bzw. um diesen Dienst erweitert durch die Eingabe von:
# ypinit -s <Name des NIS-Master-Servers>
Der Name des NIS-Master-Servers ist als Parameter mit anzugeben, da von diesem u.a. alle verwalteten NIS-Maps heruntergeladen werden.
Abschliessend wird der NIS-Client-Prozess ypbind wieder gestoppt und NIS erneut gestartet, wobei diesmal neben den NIS-Client-Prozess ypbind zusaetzlich der NIS-Serverdienst ypserv gestartet wird
# /usr/lib/netsvc/yp/ypstop
...
# /usr/lib/netsvc/yp/ypstart
-A--> Starting NIS(YP server) services: ypserv ypbind done.
Nachtraegliches Aufsetzen eines NIS-Slave-Servers
Fuer das nachtraegliche Aufsetzen eines NIS-Slave-Servers gibt es zwei unterschiedliche Methoden:
1. Der NIS-Master-Server wird erneut durch das Aufrufen von ypinit -m konfiguriert, wobei jetzt jedoch der neue NIS-Slave-Server mit
angegeben wird, was bedeutet, dass die alte Domain entfernt wird und durch eine neue, identische, jedoch um den neuen NIS-Slave-Server
erweiterte Domain ersetzt wird.
2. Die Liste der NIS-Server (ypservers) wird manuell um den Namen des zukuenftigen NIS-Slave-Servers erweitert.
Dafuer muss zuerst die im NIS-Datenbankformat vorliegende Datei /var/yp/<Name der Domain>/ypservers in ein fuer Menschen lesbares
Dateiformat (ASCII) umgewandelt, anschliessend editiert und wieder in das NIS-Datenbankformat umgewandelt werden.
Dies geschieht durch eine Umlenkung der Standardausgabe des makedbm-Befehls, angewand auf ypservers, in eine temporaere Datei:
# makedbm -u ypservers > /tmp/nisserverliste.txt
# vi /tmp/nisserverliste.txt <--E- Name des neuen NIS-Slave-Servers
# makedbm /tmp/nisserverliste.txt ypservers
Anschliessend den neuen NIS-Slave-Server wie oben beschrieben aufsetzen.
Zur Kontrolle gibt die Standardausgabe des makedbm-Befehls, wiederum angewand auf ypservers, die neue und um den neuen NIS-Slave-Server erweiterte Liste aus:
-A--> YP_LAST_MODIFIES ...
YP_MASTER_NAME xyz
neuer NIS-Slave-Server
alter NIS-Slave-Server
Update eines NIS-Slave-Servers
Mit Hilfe des yppush-Befehls auf Seiten des NIS-Master-Servers, werden alle NIS-Slave-Server automatisch mit den veraenderten NIS-Datenbankdateien aktualisiert, wobei auf den NIS-Slave-Servern der jeweilige ypserv-Prozess kontaktiert wird, der wiederum den ypxfr-Befehl absetzt. Dieser meldet sich beim ypxfrd-Hintergrundprozess des NIS-Master-Servers und erhaelt nun die veraenderte(n) Datei(en) in seienen NIS-Datenbank unter /var/yp/<Name der Domain>/ .
Dieser Vorgang wird ebenfalls beim Erzeugen einer veraenderten oder neuen NIS-Map vom Makefile automatisch initiiert.
Der ypxfr-Befehl kann auch manuell gestarte werden und findet damit in cron-Jobs seine Anwendung, um z.B. zu einem bestimmten Zeitpunkt, regelmaessig seinen NIS-Datenbankbestand mit dem seien NIS-Master-Servers abzugleichen; dieses ist dann sinnvoll, wenn der NIS-Slave-Server zum Zeitpunkt einer Aenderung des NIS-Datenbestandes nicht online war.
Jeder Rechner einer NIS-Domain ist zuminst auch ein NIS-Client.
Dazu wird als erstes ebenfalls die NIS-Domain festgelegt:
# domainname <Name der Domain>
und diese statisch durch einen Eintrag in der zu erzeugenden Datei /etc/defaultdomain festzusetzen.
# domainname > /etc/defaultdomain
und es folgt das eigendliche Initialisieren des NIS-Clients durch die Eingabe von:
# ypinit -c <--E- Namen der NIS-Servers angeben bei Aufforderung
Nach Anpassung der /etc/nsswitch.conf wird der NIS-Client-Prozess ypbind entweder durch einen Neustart des Rechners oder Aufruf von
# /usr/lib/netsvc/yp/ypstart
-A--> Starting NIS(YP server) services: ypbind done.
gestartet.
Bei der ersten Anfrage eines NIS-Clients bindet dieser sich an einen aktiven NIS-Server und erhaellt nunmehr alle Antworten von diesem. Um zu unterscheiden, welche Dateien lokal und welche per NIS verwaltet werden, konsultiert er seine /etc/nsswitch.conf. Faellt dieser angebundene NIS-Server aus, bindet sich der NIS-Client nach wenigen Minuten an den naechsten zur Verfuegung stehenden NIS-Server.
Eine ASCII-Datei, die in das NIS-Datenbankformat konvertiert wurde, wird als (NIS-)Map oder auch Table bezeichnet und auf den NIS-Master- und NIS-Client-Servern unter /var/yp/<Name der Domain>/ abgelegt.
Die NIS-Maps bestehen aus zwei Dateitypen:
1.Indexdateien fuer den Zugriff mit dem Suffix .dir
2.Datendateien, die die eigentlichen Daten beinhalten, mit der Endung .pagWeiter wird fuer jede NIS-Map eine Datei mit Suffix .time angelegt, die jedoch keinen Inhalt haben und als Zeitstempel zum Abgleich von Veraenderungen am NIS-Datenbankbestand dienen.
|
Dateiname |
Mapname |
Bedeutung |
|---|---|---|
|
passwd |
|
|
|
group |
|
|
|
hosts |
|
|
|
ethers |
|
|
|
networks |
|
|
|
rpc |
|
|
|
services |
|
|
|
protokolls |
|
|
|
netgroup |
|
|
|
bootparams |
|
|
|
aliases |
|
|
|
publickey |
|
|
|
netid |
|
|
|
passwd.adjunct |
|
|
|
group.adjunct |
|
|
|
netmasks |
|
|
|
timezone |
|
|
|
auto.master |
|
Automounter |
|
auto.home |
auto.home |
Automounter |
Eine Besonderheit nimmt die Datei netgroups ein, da sie durchaus lokal unter /etc/netgroups vorhanden seien kann, jedoch lokal keine Bedeutung hat und nur in Zusammenhang mit Namensdiensten Anwendung findet.
Sie fasst Benutzer, Rechnen oder Domains zu einer Gruppe zusammen, unter der sie, bzw. deren Mitglieder von Programmen wie beispielsweise share oder mount, Konfigurationsdateien wie .rhosts und hosts.equiv, angesprochen werden kann.
Beispiel: #cat /etc/netgroups
Gruppe1 (host,user,domain)
Gruppe2 ( - ,user,domain)
Gruppe3 ( - , - ,domain)
NIS-Kommandos sind in den Verzeichnissen /usr/lib/netsvc/yp, /usr/sbin und /usr/bin zu finden.
Inhalt der Verzeichnisse:
/usr/lib/netsvc/yp
rpc.yppasswdd
rpc.ypupdated
ypbind
ypserv
ypstart
ypstop
ypxfr
ypxfr_1perday
ypxfr_1perhour
ypxfr_2perday
ypxfrd
/usr/sbin
ypalias
/usr/bin
ypwhich
Die NIS-Kommandos in den Verzeichnissen /usr/lib/netsvc/yp und /usr/sbin sind administrative
Kommandos und duerfen von normalen Benutzern (staff, users ...) nicht
ausgefuehrt werden.
In dem Verzeichnis /usr/bin sind mit Ausnahme von yppasswd informative NIS-Kommandos
angesiedelt, die von der Gruppe others und somit von normalen
Benutzern ausgefuehrt werden koennen.
Befehle zur Erzeugung der NIS-Datenbank
Dieses Skript ermoeglicht das Aufsetzen
von NIS-Master-Server (ypinit -m), NIS-Slave-Server (ypinit -s) und
NIS-Client (ypinit -c)
Diese Befehl gehoert zur
Solaris-Entwicklungsumgebung, ist im Paket SUNWsprot enthalten und
ruft das Skript Makefile auf.
Nach jeder Veraenderung der
Quelldateien wird aus dem Verzeichnis /var/yp heraus der Befehl
/usr/ccs/bin/make abgesetzt und damit durch ein automatisches yppush
die NIS-Slave-Server upgedatet.
Die PATH-Variable solte um den Pfad
/usr/ccs/bin ergenzt werden ( PATH=$PATH:/usr/ccs/bin).
wird von dem Skript Makefile aufgerufen
und erzeugt auf dem NIS-Master-Server anhand der im Makefile
beschriebenen Regeln, aus den Quelldateien, welche im Ascii-Format
vorliegen muessen, die NIS-Datenbankdateien, die sogenannten NIS-Maps
oder NIS-Tables. Es werden je Quelldateie zwei Dateien mit den
Endungen .dir und .pag erzeugt, wobei die .dir-Dateien die Indexe
fuer den Zugriff auf die .pag-Dateien, die eigentlichen Daten,
enthalten.
Befehle zur NIS-Administration
wird ebenfalls von dem Skript Makefile verwendet und aktuallisiert alle NIS-Slave-Server, die in der Datei /var/yp/<Name der Domain>ypservers aufgelistet sind, nach Veraenderung der Quelldateien auf dem NIS-Master-Server.
Wird auf Seiten des NIS-Master-Servers der yppush-Befehl gestartet, kontaktiert dieser auf den NIS-Slave-Servern die jeweiligen ypserv-Prozesse, die wiederum ihre ypxfr-Befehle absetzten. Diese melden sich beim ypxfrd-Hintergrundprozess des NIS-Master-Servers und erhalten nun die veraenderte(n) Datei(en) in ihren NIS-Datenbank unter /var/yp/<Name der Domain>/ .
Dieser Vorgang wird ebenfalls beim Erzeugen einer veraenderten oder neuen NIS-Map vom Makefile automatisch initiiert.
Der ypxfr-Befehl kann auch manuell gestartet werden und findet damit in cron-Jobs seine Anwendung, um z.B. zu einem bestimmten Zeitpunkt, regelmaessig seinen NIS-Datenbankbestand mit dem seien NIS-Master-Servers abzugleichen; dieses ist dann sinnvoll, wenn der NIS-Slave-Server zum Zeitpunkt einer Aenderung des NIS-Datenbestandes nicht online war.
liefert Informationen, welcher Rechner welche NIS-Map verwaltet und in welcher Version sie vorliegt.
ermoeglicht die manuelle Anbindung eines NIS-Clients an einen NIS-Server (NIS-Master- oder NIS-Slave-Server), nachdem der NIS-Client-Prozess ypbind zuvor mit der Option -ypset bzw.-ypsetme gestartet wurde.
Ihm koennen sowohl Namen als auch IP-Adressen von moeglichen NIS-Servern uebergeben werden.
ypwhich [Optionen] <Name des Rechners>
zeigt dem NIS-Client-Prozess an, an welchen NIS-Server (NIS-Master- oder NIS-Slave-Server) er angebunden ist.
ypcat [Optionen] <Name der Datei>
gibt den Inhalt einer NIS-Dqatenbankdatei, also einen NIS-Map aus.
ypmatch [Optionen] <Suchbegriff> <Name der NIS-Map>
ypserv
Der Hinergrundprozess oder auch Daemon ypserv wird beim Systemstart durch das Skript /etc/init.d/rpc oder durch den ypstart-Befehl gestartet und antwortet auf NIS-Master- und NIS-Slave-Servern die Anfragen von NIS-Clients.
ypxfrd
Daemon, der auf dem NIS-Master-Server der Ansprechpartner der ypxfr-Befehle auf Seiten der NIS-Slave-Servers ist. und der Aktualisierung des NIS-Datenbankbestands derselbigen dient.
ypbind
Der ypbind-Prozess ist der NIS-Client-Prozess und laeuft auf allen Rechnern einer NIS-Domain, also auf NIS-Master-, NIS-Slave-Servern und NIS-Clients.
Er verwirklicht die Anbindung des NIS-Client-Prozesses an den ypserc-Prozess eines NIS-Servers.yppasswdd
...
ypupdated
/var/yp/Makefile
...
/var/yp/securenets
...
/var/yp/nicknames
...
Köln LUG
-
die kölner
Linux
und
U.n.i.x
Gruppe
|
CopyMiddle © 2007 by
|