Will man sich bei einem Netzwerk an jedem Rechner mit gleichem Usernamen und Passwort einloggen,
benötigt man die Gelben Seiten...
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+.
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.
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/ypservin die /sbin/init.d/boot.local eingetragen werden, oder man erstellt ein entsprechendes Init-Skript.
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:
>> ypservund testen den Server danach mittels
>> rpcinfo -u localhost ypservAls Antwort sollte man dann etwa folgende Ausgabe erhalten:
program 100004 version 2 ready and waitingAls 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).
>> ypdomainname meinnetz.deSuSE-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/bashwobei die Einträge folgende Informationen getrennt durch Doppelpunkte enthalten:
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
>> ypmakeaus. 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/nullstehen.
>> crontab -ewährend man über die Umgebungsvariable $EDITOR den zum Editieren benutzenden Texteditor einstellen kann, z.B.
>> export EDITOR=emacsDer NIS-Server ist nun konfiguriert, im nächsten Schritt wenden wir uns den Clients zu.
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:
Zum Starten des NIS-Clients benötigt man einen Eintrag der Form
ypdomainname meinnetz.de /usr/sbin/ypbindin 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
-usernamekö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
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.
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 0Der 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 /homeUm das Mounten des Home-Verzeichnisses zu testen, führt man dann den Befehl
mount servername:/home /homeaus. 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.