Over deze HOWTO
Deze HOWTO helpt je met het installeren, configureren en beheren van NIS, de Network Information Service. Deze HOWTO is gebaseerd op een minimale Fedora Core installatie. Dat wil zeggen, dat aangenomen wordt dat eventuele additionele pakketten nog niet zijn geïnstalleerd, en alle standaard pakketten niet zijn geïnstalleerd.
Wat is NIS?
Wanneer een gebruiker inlogt op een systeem, wordt de gebruikersnaam en het wachtwoord gecontroleerd met de locale database, meestal, maar afhankelijk van enkele instellingen /etc/passwd
, /etc/shadow
> en /etc/group
. Wanneer gebruikers op meerdere systemen moeten kunnen inloggen, is het efficiënter om de gebruikersnamen en wachtwoorden te centraliseren. Dit kan, met NIS. Hiervoor heb je het volgende nodig:
- Een systeem om als NIS server in te richten
- Een systeem om als NIS cliënt te laten fungeren
Installatie van de NIS Server op Fedora Core
Om als NIS Server te kunnen fungeren, moet je de volgende pakketten installeren:
yum install ypserv
Ik raad je aan om ook het pakket yp-tools
te installeren, hiermee kunnen we in een later stadium tests uitvoeren:
yum install yp-tools
Let op: Om NIS goed te laten functioneren, hebben we ook een goed functionerende DNS configuratie nodig.
Stel je NIS domain in
Wijzig /etc/sysconfig/network
:
nano /etc/sysconfig/network
en voeg de regel toe (of vervang de regel, indien al een regel bestaat die begint met NISDOMAIN
):
/etc/sysconfig/network NISDOMAIN="FEDORA-LINUX"
Stel de NIS Server in
Wijzig het bestand /etc/yp.conf
:
nano /etc/yp.conf
en vul in plaats van ‘pinky.kanarip.com’ de DNS naam van je eigen systeem in:
/etc/yp.conf domain FEDORA-LINUX server pinky.kanarip.com
Start de NIS Server en gerelateerde daemons
Om de NIS Server te starten, is het van belang ook portmap, yppasswdd en ypxfrd
service portmap start Starting portmapper: [ OK ] service yppasswdd start Starting YP passwd service: [ OK ] service ypserv start Setting NIS domain name NIS-SCHOOL-NETWORK: [ OK ] Starting YP server services: [ OK ]
Zorg vervolgens dat deze services ook worden gestart na een reboot:
chkconfig portmap on chkconfig yppasswdd on chkconfig ypserv on
Hier is een overzicht van de functies van iedere service:
NIS Services | ||
---|---|---|
portmap | Dit is de RPC daemon waarop NIS is gebaseerd | |
yppasswdd | Dit is de daemon die het mogelijk maakt om gebruikers op NIS clients hun wachtwoord te wijzigen | |
ypserv | De NIS server | |
ypbind | De NIS client | |
ypxfrd | Versneld synchronisatie tussen NIS servers bij hele grote NIS database bestanden | |
Zorg dat alle services draaien, voordat je verder gaat met de volgende stap. Je kunt dit controleren met het volgende commando:
rpcinfo -p localhost program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100004 2 udp 884 ypserv 100004 1 udp 884 ypserv 100004 2 tcp 884 ypserv 100004 1 tcp 884 ypserv 100009 1 udp 970 yppasswdd
Let op: Bovenstaande hoeft niet perse overeen te komen met wat je ziet op je eigen NIS server. De poorten die de op RPC gebaseerde services gebruiken worden door de portmapper toegewezen.
Initialiseer je NIS domein
Nu je de naam hebt gekozen voor je NIS domein, en de gerelateerde services hebt gestart, wordt het tijd om de NIS server te vullen met informatie. Hiertoe gebruik je het commando /usr/lib/yp/ypinit
, waarna je de NIS server op moet geven. In ons voorbeeld is dit pinky.kanarip.com, maar op je eigen server gebruik je hiervoor de DNS naam van je eigen NIS server.
/usr/lib/yp/ypinit -m At this point, we have to construct a list of the hosts which will run NIS servers. bigboy is in the list of NIS server hosts. Please continue to add the names for the other hosts, one per line. When you are done with the list, type a <control D>. next host to add: pinky.kanarip.com next host to add: The current list of NIS servers looks like this: pinky.kanarip.com Is this correct? [y/n: y] y We need a few minutes to build the databases... Building /var/yp/FEDORA-LINUX/ypservers... Running /var/yp/Makefile... gmake[1]: Entering directory `/var/yp/FEDORA-LINUX' Updating passwd.byname... Updating passwd.byuid... Updating group.byname... Updating group.bygid... Updating hosts.byname... Updating hosts.byaddr... Updating rpc.byname... Updating rpc.bynumber... Updating services.byname... Updating services.byservicename... Updating netid.byname... Updating protocols.bynumber... Updating protocols.byname... Updating mail.aliases... gmake[1]: Leaving directory `/var/yp/FEDORA-LINUX' pinky.kanarip.com has been set up as a NIS master server. Now you can run ypinit -s pinky.kanarip.com on all slave server.
Start de NIS client (op de server)
Je NIS server is nu gereed, in de zin dat de NIS database is gevuld. Nu is het tijd om de ypxfrd service te starten, en de ypbind service, zodat de NIS server ook client wordt van zichzelf.
Voer de volgende commando’s uit:
service ypbind start Binding to the NIS domain: [ OK ] Listening for an NIS domain server. service ypxfrd start Starting YP map server: [ OK ] chkconfig ypbind on chkconfig ypxfrd on
En controleer of het domein helemaal goed draait (hiervoor is het pakket yp-tools
nodig):
ypcat passwd user1:$1$T0mFXxM1$Anasd55fJAqZecs9moLKO.:500:500::/home/user1:/bin/bash user2:$1$T0mFXxM1$Anasd55fJAqZecs9moLKO.:501:501::/home/user2:/usr/bin/passwd user3:$1$T0mFXxM1$Anasd55fJAqZecs9moLKO.:502:502::/home/user3:/sbin/nologin [...]
Installatie van de NIS client op Fedora Core
Zoals eerder in deze HOWTO al aangestipt, heeft een minimale installatie van Fedora Core reeds de pakketten geïnstalleerd die nodig zijn om een systeem als NIS client te laten fungeren.
Configureer authenticatie
Om authenticatie te configureren, geef je het volgende commando:
authconfig --enablenis --nisdomain=FEDORA-LINUX --nisserver=pinky.kanarip.com
Als dit klaar is, zou het een bestand /etc/yp.conf
moeten hebben gemaakt met de volgende inhoud:
/etc/yp.conf domain FEDORA-LINUX server pinky.kanarip.com
en /etc/sysconfig/network heeft de regel:
/etc/sysconfig/network NISDOMAIN=FEDORA-LINUX
Daarbij wordt het bestand /etc/nsswitch.conf
gewijzigd door dit commando. /etc/nsswitch.conf
bevat de volgorde waarin het systeem zoekt naar middelen om namen te resolven, zoals de normale bestanden, DNS, LDAP en/of NIS. Hier is te zien dat authconfig enkele belangrijke bestanden met betrekking tot gebruikers, wachtwoorden en groepen heeft gewijzigd.
/etc/nsswitch.conf [...] passwd: files nis shadow: files nis group: files nis [...]
Er wordt nu eerst gezocht in de bestanden /etc/passwd
, /etc/shadow
en /etc/group
, en daarna in NIS.
Start de NIS client services
Start nu de services voor de NIS client:
service portmap start Starting portmapper: [ OK ] service ypbind start Binding to the NIS domain: [ OK ] Listening for an NIS domain server. service ypasswdd start Starting YP passwd service: [ OK ]
en zorg dat deze ook worden gestart als het systeem start:
chkconfig portmap on chkconfig ypbind on chkconfig yppasswdd on
Gebruik het commando rpcinfo -p localhost
om te controleren of bovenstaande services volledig zijn gestart.
Test of de NIS client verbinding kan maken met de NIS server met het commando:
ypcat passwd user1:$1$T0mFXxM1$Anasd55fJAqZecs9moLKO.:500:500::/home/user1:/bin/bash user2:$1$T0mFXxM1$Anasd55fJAqZecs9moLKO.:501:501::/home/user2:/usr/bin/passwd user3:$1$T0mFXxM1$Anasd55fJAqZecs9moLKO.:502:502::/home/user3:/sbin/nologin [...]
Gefeliciteerd, je hebt NIS succesvol geconfigureerd.
Gebruikers beheren
Gebruiker toevoegen
Een gebruiker toevoegen gebeurd op de NIS server. Hiertoe maak je, zoals normaal, een gebruiker aan:
useradd user83 passwd user83 Changing password for user user83. New password: Retype new password: passwd: all authentication tokens updated successfully.
Daarna moet de NIS database up-to-date worden gebracht:
cd /var/yp make gmake[1]: Entering directory `/var/yp/FEDORA-LINUX' Updating passwd.byname... Updating passwd.byuid... Updating netid.byname... gmake[1]: Leaving directory `/var/yp/FEDORA-LINUX'
Ter controle:
ypmatch user83 passwd user83:$1$T0mFXxM1$Anasd55fJAqZecs9moLKO.:583:583::/home/user83:/bin/bash
Gebruiker verwijderen
Een gebruiker verwijderen gaat ook alleen vanaf de NIS server:
userdel user83
Daarna moet de NIS database up-to-date gebracht worden:
cd /var/yp make gmake[1]: Entering directory `/var/yp/FEDORA-LINUX' Updating passwd.byname... Updating passwd.byuid... Updating netid.byname... gmake[1]: Leaving directory `/var/yp/FEDORA-LINUX'
Wachtwoord wijzigen
Het wachtwoord kan door zowel root als door de gebruiker worden gewijzigd met het commando:
yppasswd user83
Of, als gebruiker:
yppasswd
Hierna hoeft de NIS database niet apart up-to-date te worden gebracht. Het is dus van belang om je gebruikers op de hoogte te stellen van dit feit, en ze niet met het commando passwd
hun wachtwoord te laten wijzigen.
Quick & Dirty oplossing voor het wijzigen van wachtwoorden
Voor ervaren gebruikers Ik doe op mijn systemen het volgende:
- Controleer in de $PATH environment variabele dat
/sbin
voor/usr/bin
staat ($PATH geeft de volgorde aan waarin de directories worden doorzocht naar een opgegeven commando).
mv /usr/bin/passwd /sbin/passwd ln -s /usr/bin/yppasswd /usr/bin/passwd
De gebruikers kunnen nu gewoon van het commando passwd
gebruik blijven maken, terwijl ze op de achtergrond eigenlijk gebruik maken van yppasswd
.
Wijzigen van overige gebruikersinstellingen
Het wijzigen van de overige gebruikersinstellingen, zoals Full Name, Shell en Home Directory, moeten worden uitgevoerd op de NIS server, met het commando usermod
. De lokale user database wordt dan aangepast, en dus zal de NIS server database nog up-to-date moeten worden gebracht:
cd /var/yp; make
De wijzigingen zijn nu beschikbaar op alle NIS clients.
Groepen beheren
Het toevoegen, verwijderen of wijzigen van een groep, zijn allen acties die alvorens in de NIS database opgenomen te kunnen worden, eerst op de lokale user database van de NIS server moeten worden uitgevoerd. Hieronder valt tevens het toevoegen van een gebruiker aan een groep, of het verwijderen van een gebruiker uit een groep.
Hierna dient de NIS server database up-to-date te worden gebracht:
cd /var/yp; make
Foutmeldingen
Het duurt erg lang om ypbind te starten
Als het erg lang duurt om ypbind te starten, controleer dan of op de NIS server de RPC daemon ypserv wel goed draait:
service ypserv status ypserv (pid 1766) is running... # rpcinfo -p localhost [root@pinky ~]# rpcinfo -p localhost program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100004 2 udp 884 ypserv 100004 1 udp 884 ypserv 100004 2 tcp 884 ypserv 100004 1 tcp 884 ypserv 100009 1 udp 970 yppasswdd 600100069 1 udp 913 fypxfrd 600100069 1 tcp 915 fypxfrd 100007 2 udp 885 ypbind 100007 1 udp 885 ypbind 100007 2 tcp 885 ypbind 100007 1 tcp 885 ypbind
Indien de service ypserv
niet netjes draait, herstart deze:
service ypserv restart
of, wanneer portmap niet volledige antwoorden geeft, herstart de portmap service en de ypserv service:
service portmap restart service ypserv restart