Das Network Information System (NIS)
wurde entwickelt, um UNIX®-Systeme zentral verwalten zu
können. Dazu zählen beispielsweise Solaris™, HP-UX, AIX®,
Linux®, NetBSD, OpenBSD und FreeBSD. NIS war
ursprünglich als Yellow Pages bekannt,
aus markenrechtlichen Gründen wurde der Name aber geändert.
Dies ist der Grund, warum NIS-Kommandos mit
yp
beginnen.
Bei NIS handelt es sich um ein RPC-basiertes Client/Server-System. Eine Gruppe von Rechnern greift dabei innerhalb einer NIS-Domäne auf gemeinsame Konfigurationsdateien zu. Dies erlaubt es einem Systemadministrator, NIS-Clients mit minimalem Aufwand einzurichten, sowie Änderungen an der Systemkonfiguration von einem zentralen Ort aus durchzuführen.
FreeBSD verwendet die Version 2 des NIS-Protokolls.
Tabelle 30.1 fasst die Begriffe und Anwenderprozesse zusammen, die von NIS verwendet werden:
Begriff | Beschreibung |
---|---|
NIS-Domänenname | NIS-Masterserver und Clients benutzen einen gemeinsamen NIS-Domänennamen. In der Regel hat dieser Name nichts mit DNS zu tun. |
rpcbind(8) | Dieser Dienst aktiviert RPC und muss gestartet sein, damit ein NIS-Server oder -Client ausgeführt werden kann. |
ypbind(8) | Dieser Dienst „bindet“ einen NIS-Client an seinen NIS-Server. Der Client bezieht den NIS-Domänennamen vom System und stellt über das RPC-Protokoll eine Verbindung zum NIS-Server her. ypbind ist der zentrale Bestandteil der Client-Server-Kommunikation in einer NIS-Umgebung. Wird der Dienst auf einem Client beendet, ist dieser nicht mehr in der Lage, auf den NIS-Server zuzugreifen. |
ypserv(8) | Dies ist der Prozess für den NIS-Server. Wenn dieser Dienst nicht mehr läuft, kann der Server nicht mehr auf NIS-Anforderungen reagieren. Wenn ein Slaveserver existiert, kann dieser als Ersatz fungieren. Einige NIS-Systeme (allerdings nicht das von FreeBSD) versuchen allerdings erst gar nicht, sich mit einem anderen Server zu verbinden, wenn der Masterserver nicht mehr reagiert. Die einzige Lösung besteht darin, den Serverprozess oder den ypbind-Prozess auf dem Client neu zu starten. |
rpc.yppasswdd(8) | Dieser Prozess läuft nur auf dem NIS-Masterserver. Es handelt sich um einen Daemonprozess, der es NIS-Clients ermöglicht, ihre NIS-Passwörter zu ändern. Wenn dieser Daemon nicht läuft, müssen sich die Benutzer am NIS-Masterserver anmelden und ihre Passwörter dort ändern. |
NIS-Masterserver
Dieser Server dient als zentraler Speicherort für
Rechnerkonfigurationen. Zudem verwaltet er die
maßgebliche Kopie, der von den
NIS-Clients gemeinsam verwendeten
Dateien. passwd
,
group
, sowie verschiedene andere von
den Clients verwendete Dateien existieren auf dem
Masterserver. Obwohl ein Rechner auch für mehrere
NIS-Domänen als Masterserver fungieren
kann, wird diese Art von Konfiguration nicht behandelt, da
sich dieser Abschnitt auf eine relativ kleine
NIS-Umgebung konzentriert.
NIS-Slaveserver
NIS-Slaveserver verwalten Kopien der Daten des NIS-Masterservers um Redundanz zu bieten. Zudem entlasten Slaveserver den Masterserver: NIS-Clients verbinden sich immer mit dem NIS-Server, welcher zuerst reagiert. Dieser Server kann auch ein Slaveserver sein.
NIS-Clients
NIS-Clients identifizieren sich gegenüber dem NIS-Server während der Anmeldung.
Mit NIS können Informationen aus
verschiedenen Dateien von mehreren Rechnern gemeinsam
verwendet werden. master.passwd
,
group
, und hosts
werden oft gemeinsam über NIS verwendet.
Immer, wenn ein Prozess auf einem Client auf Informationen
zugreifen will, die normalerweise in lokalen Dateien vorhanden
wären, wird stattdessen eine Anfrage an den
NIS-Server gestellt, an den der Client
gebunden ist.
Dieser Abschnitt beschreibt eine einfache
NIS-Umgebung, welche aus 15 FreeBSD-Maschinen
besteht, für die keine zentrale Verwaltung existiert. Jeder
Rechner hat also eine eigene Version von
/etc/passwd
und
/etc/master.passwd
. Diese Dateien werden
manuell synchron gehalten; wird ein neuer Benutzer
angelegt, so muss dies auf allen fünfzehn Rechnern manuell
erledigt werden.
In Zukunft soll die Konfiguration wie folgt aussehen:
Rechnername | IP-Adresse | Rechneraufgabe |
---|---|---|
ellington | 10.0.0.2 | NIS-Master |
coltrane | 10.0.0.3 | NIS-Slave |
basie | 10.0.0.4 | Workstation der Fakultät |
bird | 10.0.0.5 | Clientrechner |
cli[1-11] | 10.0.0.[6-17] | Verschiedene andere Clients |
Wenn erstmalig ein NIS-Schema eingerichtet wird, sollte es im Voraus sorgfältig geplant werden. Unabhängig von der Größe des Netzwerks müssen einige Entscheidungen im Rahmen des Planungsprozesses getroffen werden.
Wenn ein Client Informationen anfordert, ist in dieser Anforderung der Name der NIS-Domäne enthalten. Dadurch weiß jeder Server im Netzwerk, auf welche Anforderung er antworten muss. Stellen Sie sich den NIS-Domänennamen als einen Namen einer Gruppe von Rechnern vor.
Manchmal wird der Name der Internetdomäne auch für die
NIS-Domäne verwendet. Dies ist
allerdings nicht empfehlenswert, da es bei der Behebung von
Problemen verwirrend sein kann. Der Name der
NIS-Domäne sollte innerhalb des
Netzwerks eindeutig sein. Hilfreich ist es, wenn der Name
die Gruppe der in ihr zusammengefassten Rechner beschreibt.
Die Kunstabteilung von Acme Inc. hätte daher vielleicht die
NIS-Domäne „acme-art“. Für
dieses Beispiel wird der Name test-domain
verwendet.
Es gibt jedoch auch Betriebssysteme, die als NIS-Domänennamen den Namen der Internetdomäne verwenden. Wenn dies für einen oder mehrere Rechner des Netzwerks zutrifft, muss der Name der Internetdomäne als NIS-Domänennamen verwendet werden.
Bei der Wahl des NIS-Servers müssen einige Dinge beachtet werden. Da die NIS-Clients auf die Verfügbarkeit des Servers angewiesen sind, sollten Sie einen Rechner wählen, der nicht regelmäßig neu gestartet werden muss. Der NIS-Server sollte idealerweise ein alleinstehender Rechner sein, dessen einzige Aufgabe es ist, als NIS-Server zu dienen. Wenn das Netzwerk nicht zu stark ausgelastet ist, ist es auch möglich, den NIS-Server als weiteren Dienst auf einem anderen Rechner laufen zu lassen. Wenn jedoch ein NIS-Server ausfällt, wirkt sich dies negativ auf alle NIS-Clients aus.
Die verbindlichen Kopien aller
NIS-Dateien befinden sich auf dem
Masterserver. Die Datenbanken, in denen die Informationen
gespeichert sind, bezeichnet man als
NIS-Maps. Unter FreeBSD werden diese Maps
unter /var/yp/[domainname]
gespeichert,
wobei [domainname]
der Name der
NIS-Domäne ist. Da ein
NIS-Server mehrere Domänen verwalten
kann, können auch mehrere Verzeichnisse vorhanden sein.
Jede Domäne verfügt über ein eigenes Verzeichnis sowie einen
eigenen, von anderen Domänen unabhängigen Satz von
NIS-Maps.
NIS-Master- und Slaveserver verwenden ypserv(8), um NIS-Anfragen zu bearbeiten. Dieser Daemon ist für eingehende Anfragen der NIS-Clients verantwortlich. Er ermittelt aus der angeforderten Domäne und Map einen Pfad zur entsprechenden Datenbank und sendet die angeforderten Daten von der Datenbank zum Client.
Abhängig von den Anforderungen ist die Einrichtung eines
NIS-Masterservers relativ einfach, da
NIS von FreeBSD bereits in der
Standardkonfiguration unterstützt wird. Es kann durch
folgende Zeilen in /etc/rc.conf
aktiviert
werden:
nisdomainname="test-domain
"nis_server_enable="YES"
nis_yppasswdd_enable="YES"
Diese Zeile setzt den
NIS-Domänennamen auf
| |
Dadurch werden die NIS-Serverprozesse beim Systemstart automatisch ausgeführt. | |
Durch diese Zeile wird der rpc.yppasswdd(8)-Daemon aktiviert, der die Änderung von NIS-Passwörtern von einem Client aus ermöglicht. |
Wird ypserv in einer Multi-Serverdomäne verwendet, in der NIS-Server gleichzeitig als NIS-Clients arbeiten, ist es eine gute Idee, diese Server zu zwingen, sich an sich selbst zu binden. Damit wird verhindert, dass Bindeanforderungen gesendet werden und sich die Server gegenseitig binden. Sonst könnten seltsame Fehler auftreten, wenn ein Server ausfällt, auf den andere Server angewiesen sind. Letztlich werden alle Clients einen Timeout melden, und versuchen, sich an andere Server zu binden. Die dadurch entstehende Verzögerung kann beträchtlich sein. Außerdem kann der Fehler erneut auftreten, da sich die Server wiederum aneinander binden könnten.
Server, die auch als Client arbeiten, können durch das
Hinzufügen der folgenden Zeilen in
/etc/rc.conf
zu gezwungen werden, sich an
einen bestimmten Server zu binden:
nis_client_enable="YES"nis_client_flags="-S
test-domain
,server
"
Ermöglicht die Aktivierung der Client-Komponenten. | |
Diese Zeile setzt den NIS-Domain
Namen |
Nachdem die Parameter konfiguriert wurden, muss noch
/etc/netstart
ausgeführt werden, um alles
entsprechend den Vorgaben in /etc/rc.conf
einzurichten. Bevor die NIS-Maps
einrichtet werden können, muss der ypserv(8)-Daemon
manuell gestartet werden:
#
service ypserv start
NIS-Maps Sie werden am
NIS-Masterserver aus den
Konfigurationsdateien unter /etc
erzeugt. Einzige Ausnahme:
/etc/master.passwd
. Dies verhindert,
dass die Passwörter für root
- oder andere
Administratorkonten an alle Server in der
NIS-Domäne verteilt werden. Deshalb
werden die primären Passwort-Dateien konfiguriert, bevor die
NIS-Maps initialisiert werden:
#
cp /etc/master.passwd /var/yp/master.passwd
#
cd /var/yp
#
vi master.passwd
Es ist ratsam, alle Einträge für Systemkonten sowie
Benutzerkonten, die nicht an die
NIS-Clients weitergegeben werden sollen,
wie beispielsweise root
und weitere
administrative Konten, zu entfernen.
Stellen Sie sicher, dass
/var/yp/master.passwd
weder von der
Gruppe noch von der Welt gelesen werden kann, indem Sie
Zugriffsmodus auf 600
einstellen.
Nun können die NIS-Maps
initialisiert werden. FreeBSD verwendet dafür das Skript
ypinit(8). Geben Sie -m
und den
NIS-Domänennamen an, wenn Sie
NIS-Maps für den Masterserver
erzeugen:
ellington#
ypinit -m test-domain
Server Type: MASTER Domain: test-domain Creating an YP server will require that you answer a few questions. Questions will all be asked at the beginning of the procedure. Do you want this procedure to quit on non-fatal errors? [y/n: n]n
Ok, please remember to go back and redo manually whatever fails. If not, something might not work. At this point, we have to construct a list of this domains YP servers. rod.darktech.org is already known as master server. Please continue to add any slave servers, one per line. When you are done with the list, type a <control D>. master server : ellington next host to add:coltrane
next host to add:^D
The current list of NIS servers looks like this: ellington coltrane Is this correct? [y/n: y]y
[..output from map generation..] NIS Map update completed. ellington has been setup as an YP master server without any errors.
Dadurch erzeugt ypinit
/var/yp/Makefile
aus
/var/yp/Makefile.dist
. Diese Datei
geht in der Voreinstellung davon aus, dass in einer
NIS-Umgebung mit nur einem Server
gearbeitet wird und dass alle Clients unter FreeBSD laufen. Da
test-domain
aber auch über einen
Slaveserver verfügt, muss
/var/yp/Makefile
entsprechend angepasst
werden, sodass es mit einem Kommentar (#
)
beginnt:
NOPUSH = "True"
Jedes Mal, wenn ein neuer Benutzer angelegt wird,
muss er am NIS-Masterserver hinzugefügt
und die NIS-Maps anschließend neu
erzeugt werden. Wird dieser Punkt vergessen, kann sich
der neue Benutzer nur am
NIS-Masterserver anmelden. Um
beispielsweise den neuen Benutzer jsmith
zur Domäne
test-domain
hinzufügen wollen, müssen
folgende Kommandos auf dem Masterserver ausgeführt
werden:
#
pw useradd jsmith
#
cd /var/yp
#
make test-domain
Statt pw useradd jsmith
kann auch
adduser jsmith
verwendet werden.
Um einen NIS-Slaveserver einzurichten,
melden Sie sich am Slaveserver an und bearbeiten Sie
/etc/rc.conf
analog zum Masterserver.
Erzeugen Sie aber keine NIS-Maps, da diese
bereits auf dem Server vorhanden sind. Wenn
ypinit
auf dem Slaveserver ausgeführt wird,
benutzen Sie -s
(Slave) statt
-m
(Master). Diese Option benötigt den Namen
des NIS-Masterservers und den Domänennamen,
wie in diesem Beispiel zu sehen:
coltrane#
ypinit -s ellington test-domain
Server Type: SLAVE Domain: test-domain Master: ellington Creating an YP server will require that you answer a few questions. Questions will all be asked at the beginning of the procedure. Do you want this procedure to quit on non-fatal errors? [y/n: n]n
Ok, please remember to go back and redo manually whatever fails. If not, something might not work. There will be no further questions. The remainder of the procedure should take a few minutes, to copy the databases from ellington. Transferring netgroup... ypxfr: Exiting: Map successfully transferred Transferring netgroup.byuser... ypxfr: Exiting: Map successfully transferred Transferring netgroup.byhost... ypxfr: Exiting: Map successfully transferred Transferring master.passwd.byuid... ypxfr: Exiting: Map successfully transferred Transferring passwd.byuid... ypxfr: Exiting: Map successfully transferred Transferring passwd.byname... ypxfr: Exiting: Map successfully transferred Transferring group.bygid... ypxfr: Exiting: Map successfully transferred Transferring group.byname... ypxfr: Exiting: Map successfully transferred Transferring services.byname... ypxfr: Exiting: Map successfully transferred Transferring rpc.bynumber... ypxfr: Exiting: Map successfully transferred Transferring rpc.byname... ypxfr: Exiting: Map successfully transferred Transferring protocols.byname... ypxfr: Exiting: Map successfully transferred Transferring master.passwd.byname... ypxfr: Exiting: Map successfully transferred Transferring networks.byname... ypxfr: Exiting: Map successfully transferred Transferring networks.byaddr... ypxfr: Exiting: Map successfully transferred Transferring netid.byname... ypxfr: Exiting: Map successfully transferred Transferring hosts.byaddr... ypxfr: Exiting: Map successfully transferred Transferring protocols.bynumber... ypxfr: Exiting: Map successfully transferred Transferring ypservers... ypxfr: Exiting: Map successfully transferred Transferring hosts.byname... ypxfr: Exiting: Map successfully transferred coltrane has been setup as an YP slave server without any errors. Remember to update map ypservers on ellington.
Hierbei wird auf dem Slaveserver ein Verzeichnis namens
/var/yp/test-domain
erstellt, welches
Kopien der NIS-Masterserver-Maps enthält.
Durch hinzufügen der folgenden Zeilen in
/etc/crontab
wird der Slaveserver
angewiesen, seine Maps mit den Maps des Masterservers zu
synchronisieren:
20 * * * * root /usr/libexec/ypxfr passwd.byname 21 * * * * root /usr/libexec/ypxfr passwd.byuid
Diese Einträge sind nicht zwingend notwendig, da der Masterserver automatisch versucht, alle Änderungen seiner NIS-Maps an seine Slaveserver weiterzugeben. Da Passwortinformationen aber auch für nur vom Slaveserver abhängige Systeme vital sind, ist es eine gute Idee, diese Aktualisierungen zu erzwingen. Besonders wichtig ist dies in stark ausgelasteten Netzen, in denen Map-Aktualisierungen unvollständig sein könnten.
Um die Konfiguration abzuschließen, führen Sie
/etc/netstart
auf dem Slaveserver aus, um
die NIS-Dienste erneut zu starten.
Ein NIS-Client
bindet
sich unter Verwendung von
ypbind
an einen
NIS-Server. Dieser Daemon sendet
RPC-Anfragen auf dem lokalen Netzwerk. Diese Anfragen legen
den Namen der Domäne fest, die auf dem Client konfiguriert
ist. Wenn der Server der entsprechenden Domäne eine solche
Anforderung erhält, schickt er eine Antwort an
ypbind
, das wiederum die Adresse des
Servers speichert. Wenn mehrere Server verfügbar sind,
verwendet der Client die erste erhaltene Adresse und richtet
alle Anfragen an genau diesen Server.
ypbind
„pingt“ den Server
gelegentlich an, um sicherzustellen, dass der Server
funktioniert. Antwortet der Server innerhalb eines bestimmten
Zeitraums nicht (Timeout), markiert ypbind
die Domäne als ungebunden und beginnt erneut,
RPCs über das Netzwerk zu verteilen, um
einen anderen Server zu finden.
Einen FreeBSD-Rechner als NIS-Client einrichten:
Fügen Sie folgende Zeilen in
/etc/rc.conf
ein, um den
NIS-Domänennamen festzulegen, und
um ypbind(8) bei der Initialisierung des Netzwerks zu
starten:
nisdomainname="test-domain" nis_client_enable="YES"
Um alle Passworteinträge des
NIS-Servers zu importieren, löschen Sie
alle Benutzerkonten in
/etc/master.passwd
mit
vipw
. Denken Sie daran, zumindest ein
lokales Benutzerkonto zu behalten. Dieses Konto sollte
außerdem Mitglied der Gruppe wheel
sein. Wenn es mit
NIS Probleme gibt, können Sie diesen
Zugang verwenden, um sich als Superuser anzumelden und das
Problem zu beheben. Bevor Sie die Änderungen speichern,
fügen Sie folgende Zeile am Ende der Datei hinzu:
+:::::::::
Diese Zeile legt für alle gültigen Benutzerkonten der
NIS-Server-Maps einen Zugang an. Es
gibt verschiedene Wege, den NIS-Client
durch Änderung dieser Zeile zu konfigurieren. Eine
Methode wird in Abschnitt 29.4.8, „Netzgruppen verwenden“
beschrieben. Weitere detaillierte Informationen finden
Sie im Buch Managing NFS and NIS
vom
O'Reilly Verlag.
Um alle möglichen Gruppeneinträge vom
NIS-Server zu importieren, fügen Sie
folgende Zeile in /etc/group
ein:
+:*::
Um den NIS-Client direkt zu starten, führen Sie als Superuser die folgenden Befehle aus:
#
/etc/netstart
#
service ypbind start
Danach sollte bei der Eingabe von
ypcat passwd
auf dem Client die
passwd-Map
des
NIS-Servers angezeigt werden.
Da RPC ein Broadcast-basierter Dienst
ist, kann jedes System innerhalb der Domäne mittels
ypbind den Inhalt der
NIS-Maps abrufen. Um nicht autorisierte
Transaktionen zu verhindern, unterstützt ypserv(8) eine
Funktion namens „securenets“, durch die der
Zugriff auf bestimmte Rechner beschränkt werden kann. In der
Voreinstellung sind diese Informationen in
/var/yp/securenets
gespeichert, es sei
denn, ypserv(8) wurde mit der Option -p
und einem alternativen Pfad gestartet. Diese Datei enthält
Einträge, die aus einer Netzwerkadresse und einer Netzmaske
bestehen. Kommentarzeilen beginnen mit „#“.
/var/yp/securnets
könnte beispielsweise
so aussehen:
# allow connections from local host -- mandatory 127.0.0.1 255.255.255.255 # allow connections from any host # on the 192.168.128.0 network 192.168.128.0 255.255.255.0 # allow connections from any host # between 10.0.0.0 to 10.0.15.255 # this includes the machines in the testlab 10.0.0.0 255.255.240.0
Wenn ypserv(8) eine Anforderung von einer zu diesen
Regeln passenden Adresse erhält, wird die Anforderung
bearbeitet. Gibt es keine passende Regel, wird die
Anforderung ignoriert und eine Warnmeldung aufgezeichnet.
Wenn securenets
nicht existiert, erlaubt
ypserv
Verbindungen von jedem
Rechner.
Abschnitt 13.4, „TCP Wrapper“ beschreibt eine alternative Methode zur Zugriffskontrolle. Obwohl beide Methoden einige Sicherheit gewähren, sind sie anfällig für „IP-Spoofing“-Angriffe. Der NIS-Verkehr sollte daher von einer Firewall blockiert werden.
Server, die securenets
verwenden,
können Schwierigkeiten bei der Anmeldung von
NIS-Clients haben, die ein veraltetes
TCP/IP-Subsystem besitzen. Einige dieser TCP/IP-Subsysteme
setzen alle Rechnerbits auf Null, wenn sie einen
Broadcast
durchführen oder können die
Subnetzmaske nicht auslesen, wenn sie die Broadcast-Adresse
berechnen. Einige Probleme können durch Änderungen der
Clientkonfiguration behoben werden. Andere hingegen lassen
sich nur durch das Entfernen des betreffenden Rechners aus dem
Netzwerk oder den Verzicht auf securenets
umgehen.
Die Verwendung der TCP-Wrapper verlangsamt die Reaktion des NIS-Servers. Diese zusätzliche Reaktionszeit kann in Clientprogrammen zu Timeouts führen. Dies vor allem in Netzwerken, die stark ausgelastet sind, oder nur über langsame NIS-Server verfügen. Wenn ein oder mehrere Clients dieses Problem aufweisen, sollten Sie die betreffenden Clients in NIS-Slaveserver umwandeln, und diese an sich selbst binden.
In diesem Beispiel gibt es innerhalb der
NIS-Domäne den Rechner
basie
, der nur für Mitarbeiter der
Fakultät bestimmt ist. Die passwd
Datenbank des NIS-Masterservers enthält
Benutzerkonten sowohl für Fakultätsmitarbeiter als auch für
Studenten. Dieser Abschnitt beschreibt, wie Sie den
Mitarbeitern der Fakultät die Anmeldung am System
ermöglichen, während den Studenten die Anmeldung verweigert
wird.
Es gibt eine Möglichkeit, bestimmte Benutzer an der
Anmeldung an einem bestimmten Rechner zu hindern, selbst
wenn diese in der NIS-Datenbank vorhanden
sind. Dazu kann mit vipw
der Eintrag
-
und die richtige Anzahl von Doppelpunkten an das Ende von
Benutzername
/etc/master.passwd
gesetzt werden,
wobei Benutzername
der zu
blockierende Benutzername ist. Die Zeile mit dem geblockten
Benutzer muss dabei vor der +
Zeile, für
zugelassene Benutzer stehen. In diesem Beispiel wird die
Anmeldung für den Benutzer bill
am Rechner
basie
blockiert:
basie#
cat /etc/master.passwd
root:[password]:0:0::0:0:The super-user:/root:/bin/csh toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh daemon:*:1:1::0:0:Owner of many system processes:/root:/usr/sbin/nologin operator:*:2:5::0:0:System &:/:/usr/sbin/nologin bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/usr/sbin/nologin tty:*:4:65533::0:0:Tty Sandbox:/:/usr/sbin/nologin kmem:*:5:65533::0:0:KMem Sandbox:/:/usr/sbin/nologin games:*:7:13::0:0:Games pseudo-user:/usr/games:/usr/sbin/nologin news:*:8:8::0:0:News Subsystem:/:/usr/sbin/nologin man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/usr/sbin/nologin bind:*:53:53::0:0:Bind Sandbox:/:/usr/sbin/nologin uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/usr/sbin/nologin pop:*:68:6::0:0:Post Office Owner:/nonexistent:/usr/sbin/nologin nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/usr/sbin/nologin -bill::::::::: +::::::::: basie#
Bestimmten Benutzern die Anmeldung an einzelnen Systemen zu verweigern, kann in großen Netzwerken schnell unübersichtlich werden. Dadurch verlieren Sie den Hauptvorteil von NIS: die zentrale Verwaltung.
Netzgruppen wurden entwickelt, um große, komplexe Netzwerke mit Hunderten Benutzern und Rechnern zu verwalten. Ihre Aufgabe ist vergleichbar mit UNIX® Gruppen. Die Hauptunterschiede sind das Fehlen einer numerischen ID sowie die Möglichkeit, Netzgruppen zu definieren, die sowohl Benutzer als auch andere Netzgruppen enthalten.
Um das Beispiel in diesem Kapitel fortzuführen, wird die NIS-Domäne um zusätzliche Benutzer und Rechner erweitert:
Benutzername(n) | Beschreibung |
---|---|
alpha ,
beta | Mitarbeiter der IT-Abteilung |
charlie ,
delta | Lehrlinge der IT-Abteilung |
echo ,
foxtrott ,
golf , ... | Mitarbeiter |
able ,
baker , ... | Praktikanten |
Rechnername(n) | Beschreibung |
---|---|
war ,
death ,
famine ,
pollution | Nur Mitarbeiter der IT-Abteilung dürfen sich an diesen Rechnern anmelden. |
pride ,
greed ,
envy ,
wrath ,
lust ,
sloth | Nur Mitarbeiter und Lehrlinge der IT-Abteilung dürfen sich auf diesen Rechnern anmelden. |
one ,
two ,
three ,
four , ... | Gewöhnliche Arbeitsrechner für Mitarbeiter. |
trashcan | Ein sehr alter Rechner ohne kritische Daten. Sogar Praktikanten dürfen diesen Rechner verwenden. |
Bei der Verwendung von Netzgruppen wird jeder Benutzer einer oder mehreren Netzgruppen zugewiesen und die Anmeldung wird dann für die Netzgruppe erlaubt oder verwehrt. Wenn ein neuer Rechner hinzugefügt wird, müssen die Zugangsbeschränkungen nur für die Netzgruppen festgelegt werden. Wird ein neuer Benutzer angelegt, muss er einer oder mehreren Netzgruppen zugewiesen werden. Wenn die Einrichtung von NIS sorgfältig geplant wurde, muss nur noch eine zentrale Konfigurationsdatei bearbeitet werden, um den Zugriff auf bestimmte Rechner zu erlauben oder zu verbieten.
Dieses Beispiel erstellt vier Netzgruppen: IT-Mitarbeiter, IT-Lehrlinge, normale Mitarbeiter sowie Praktikanten:
IT_EMP (,alpha,test-domain) (,beta,test-domain) IT_APP (,charlie,test-domain) (,delta,test-domain) USERS (,echo,test-domain) (,foxtrott,test-domain) \ (,golf,test-domain) INTERNS (,able,test-domain) (,baker,test-domain)
Jede Zeile konfiguriert eine Netzgruppe. Die erste Spalte der Zeile bezeichnet den Namen der Netzgruppe. Die Einträge in den Klammern stehen entweder für eine Gruppe von einem oder mehreren Benutzern, oder für den Namen einer weiteren Netzgruppe. Wenn ein Benutzer angegeben wird, haben die drei Felder in der Klammer folgende Bedeutung:
Der Name des Rechner(s), auf dem die weiteren Felder für den Benutzer gültig sind. Wird kein Rechnername festgelegt, ist der Eintrag auf allen Rechnern gültig.
Der Name des Benutzerkontos, der zu dieser Netzgruppe gehört.
Die NIS-Domäne für das Benutzerkonto. Benutzerkonten können von anderen NIS-Domänen in eine Netzgruppe importiert werden.
Wenn eine Gruppe mehrere Benutzer enthält, müssen diese durch Leerzeichen getrennt werden. Darüber hinaus kann jedes Feld Wildcards enthalten. Weitere Einzelheiten finden Sie in netgroup(5).
Netzgruppennamen sollten nicht länger als 8 Zeichen sein. Es wird zwischen Groß- und Kleinschreibung unterschieden. Die Verwendung von Großbuchstaben für Netzgruppennamen ermöglicht eine leichte Unterscheidung zwischen Benutzern, Rechnern und Netzgruppen.
Einige NIS-Clients (dies gilt nicht für FreeBSD) können keine Netzgruppen mit mehr als 15 Einträgen verwalten. Diese Grenze kann umgangen werden, indem mehrere Subnetzgruppen mit weniger als fünfzehn Benutzern angelegt werden und diese Subnetzgruppen wiederum in einer Netzgruppe zusammengefasst wird, wie in diesem Beispiel zu sehen:
BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...] BIGGRP2 (,joe16,domain) (,joe17,domain) [...] BIGGRP3 (,joe31,domain) (,joe32,domain) BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3
Wiederholen Sie diesen Vorgang, wenn mehr als 225 (15*15) Benutzer in einer einzigen Netzgruppe existieren.
Die neue NIS-Map aktivieren und verteilen:
ellington#
cd /var/yp
ellington#
make
Dadurch werden die NIS-Maps netgroup
,
netgroup.byhost
und
netgroup.byuser
erzeugt. Prüfen Sie die
Verfügbarkeit der neuen NIS-Maps mit
ypcat(1):
ellington%
ypcat -k netgroup
ellington%
ypcat -k netgroup.byhost
ellington%
ypcat -k netgroup.byuser
Die Ausgabe des ersten Befehls gibt den Inhalt von
/var/yp/netgroup
wieder. Der zweite
Befehl erzeugt nur dann eine Ausgabe, wenn rechnerspezifische
Netzgruppen erzeugt wurden. Der dritte Befehl gibt die
Netzgruppen nach Benutzern sortiert aus.
Wenn Sie einen Client einrichten, verwenden Sie
vipw(8) um den Namen der Netzgruppe anzugeben. Ersetzen
Sie beispielsweise auf dem Server namens
war
die folgende Zeile:
+:::::::::
durch
+@IT_EMP:::::::::
ersetzt werden.
Diese Zeile legt fest, dass nur noch Benutzer der
Netzgruppe IT_EMP
in die Passwortdatenbank
dieses Systems importiert werden. Nur diese Benutzer dürfen
sich an diesem Server anmelden.
Diese Konfiguration gilt auch für die
~
-Funktion der Shell und für alle Routinen,
die auf Benutzernamen und numerische Benutzer-IDs zugreifen.
Oder anders formuliert,
cd ~
ist
nicht möglich, Benutzer
ls -l
zeigt die numerische
Benutzer-ID statt dem Benutzernamen und
find . -user joe -print
erzeugt die
Fehlermeldung No such user. Um dieses
Problem zu beheben, müssen alle Benutzereinträge importiert
werden, ohne ihnen jedoch zu erlauben, sich am Server
anzumelden. Dies kann durch das Hinzufügen einer zusätzlichen
Zeile erreicht werden:
+:::::::::/usr/sbin/nologin
Diese Zeile weist den Client an, alle Einträge zu
importieren, aber die Shell in diesen Einträgen durch
/usr/sbin/nologin
zu ersetzen.
Stellen Sie sicher, dass die zusätzliche Zeile
nach der Zeile
+@IT_EMP:::::::::
eingetragen ist.
Andernfalls haben alle via NIS
importierten Benutzerkonten /usr/sbin/nologin
als Loginshell und niemand wird sich mehr am System anmelden
können.
Um die weniger wichtigen Server zu konfigurieren, ersetzen
Sie den alten Eintrag +:::::::::
auf den
Servern mit diesen Zeilen:
+@IT_EMP::::::::: +@IT_APP::::::::: +:::::::::/usr/sbin/nologin
Die entsprechenden Zeilen für Arbeitsplätze lauten:
+@IT_EMP::::::::: +@USERS::::::::: +:::::::::/usr/sbin/nologin
NIS ist in der Lage, Netzgruppen aus
anderen Netzgruppen zu bilden. Dies kann nützlich sein, wenn
sich die Firmenpolitik ändert. Eine Möglichkeit ist die
Erzeugung rollenbasierter Netzgruppen. Sie könnten eine
Netzgruppe BIGSRV
erzeugen, um den Zugang
zu den wichtigsten Servern zu beschränken, eine weitere Gruppe
SMALLSRV
für die weniger wichtigen Server
und eine dritte Netzgruppe USERBOX
für die
Arbeitsplatzrechner. Jede dieser Netzgruppen enthält die
Netzgruppen, die sich auf diesen Rechnern anmelden dürfen.
Die Einträge der Netzgruppen in der NIS-Map
sollten ähnlich den folgenden aussehen:
BIGSRV IT_EMP IT_APP SMALLSRV IT_EMP IT_APP ITINTERN USERBOX IT_EMP ITINTERN USERS
Diese Methode funktioniert besonders gut, wenn Rechner in Gruppen mit identischen Beschränkungen eingeteilt werden können. Unglücklicherweise ist dies die Ausnahme und nicht die Regel. Meistens wird die Möglichkeit zur rechnerspezischen Zugangsbeschränkung benötigt.
Rechnerspezifische Netzgruppen sind eine weitere
Möglichkeit, um mit den oben beschriebenen Änderungen
umzugehen. In diesem Szenario enthält
/etc/master.passwd
auf jedem Rechner zwei
mit „+“ beginnende Zeilen. Die erste Zeile legt
die Netzgruppe mit den Benutzern fest, die sich auf diesem
Rechner anmelden dürfen. Die zweite Zeile weist allen anderen
Benutzern /usr/sbin/nologin
als Shell zu.
Verwenden Sie auch hier (analog zu den Netzgruppen)
Großbuchstaben für die Rechnernamen:
+@BOXNAME
:::::::::
+:::::::::/usr/sbin/nologin
Sobald dies für alle Rechner erledigt ist, müssen die
lokalen Versionen von /etc/master.passwd
nie mehr verändert werden. Alle weiteren Änderungen geschehen
über die NIS-Maps. Nachfolgend ein
Beispiel für eine mögliche Netzgruppen-Map:
# Define groups of users first IT_EMP (,alpha,test-domain) (,beta,test-domain) IT_APP (,charlie,test-domain) (,delta,test-domain) DEPT1 (,echo,test-domain) (,foxtrott,test-domain) DEPT2 (,golf,test-domain) (,hotel,test-domain) DEPT3 (,india,test-domain) (,juliet,test-domain) ITINTERN (,kilo,test-domain) (,lima,test-domain) D_INTERNS (,able,test-domain) (,baker,test-domain) # # Now, define some groups based on roles USERS DEPT1 DEPT2 DEPT3 BIGSRV IT_EMP IT_APP SMALLSRV IT_EMP IT_APP ITINTERN USERBOX IT_EMP ITINTERN USERS # # And a groups for a special tasks # Allow echo and golf to access our anti-virus-machine SECURITY IT_EMP (,echo,test-domain) (,golf,test-domain) # # machine-based netgroups # Our main servers WAR BIGSRV FAMINE BIGSRV # User india needs access to this server POLLUTION BIGSRV (,india,test-domain) # # This one is really important and needs more access restrictions DEATH IT_EMP # # The anti-virus-machine mentioned above ONE SECURITY # # Restrict a machine to a single user TWO (,hotel,test-domain) # [...more groups to follow]
Es ist nicht immer ratsam, rechnerbasierte Netzgruppen zu verwenden. Wenn Dutzende oder Hunderte identische Rechner eingerichtet werden müssen, sollten rollenbasierte Netzgruppen verwendet werden, um die Größe der NIS-Maps in Grenzen zu halten.
Alle Rechner innerhalb der NIS-Domäne müssen für die Verschlüsselung von Passwörtern das gleiche Format benutzen. Wenn Benutzer Schwierigkeiten bei der Authentifizierung auf einem NIS-Client haben, liegt dies möglicherweise an einem anderen Passwort-Format. In einem heterogenen Netzwerk muss das verwendete Format von allen Betriebssystemen unterstützt werden, wobei DES der kleinste gemeinsame Standard ist.
Welches Format die Server und Clients verwenden,
steht in /etc/login.conf
:
default:\ :passwd_format=des:\ :copyright=/etc/COPYRIGHT:\ [weitere Einträge]
In diesem Beispiel verwendet das System das Format
DES. Weitere mögliche Werte sind unter
anderem blf
und md5
(mit
Blowfish und MD5 verschlüsselte Passwörter).
Wird auf einem Rechner das Format entsprechend der NIS-Domäne geändert, muss anschließend die Login-Capability Datenbank neu erstellt werden:
#
cap_mkdb /etc/login.conf
Das Format der schon bestehenden Passwörter wird erst aktualisiert, wenn ein Benutzer sein Passwort ändert, nachdem die Datenbank neu erstellt wurde.
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.