Handleidingen > Centralisatie User Acounts met NIS

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
Category: