Cet article concerne la configuration et le déploiement d'un serveur NIS.

Pour ce faire, nous allons :

  • Configurer un serveur maître NIS.
  • Configurer un client NIS.
  • Ajouter un utilisateur sur le serveur NIS et utiliser ses identifiants pour nous connecter sur le client NIS.

# Configuration du serveur maître (master) NIS

Commençons tout d'abord par l'installation des packages nécessaires.

apt-get update
apt-get install nis

Lors de l'installation du package NIS, on vous demandera de spécifier le nom de domaine du serveur NIS. J'ai choisi de nommer le mien "ynasc.srv".

Une fois le package installé, on doit spécifier le nom et l'adresse du serveur NIS dans le fichier /etc/hosts. Le nom du serveur NIS doit être pleinnement qualifié (Fully Qualified Domain Name) et suivi du nom d'hôte de la machine. Ma machine ayant "cli" pour nom d'hôte je modifie le fichier de la sorte :

nano /etc/hosts
127.0.0.1 localhost
192.168.9.253 cli.ynasc.srv cli

Il faut maintenant définir votre machine comme serveur maître, pour cela modifiez le fichier /etc/defaul/nis comme suit

nano /etc/default/nis
#Remplacez NISSERVER=false par NISSERVER=master
NISSERVER=master

Vous pouvez également limiter l'accès au serveur NIS a un réseau spécifique en modifiant le fichier /etc/ypserv.securenets . Si, par exemple, vous désirez limiter l'accès aux machines du réseau 192.168.9.0 il vous suffit de faire comme suit :

nano /etc/ypserv.sercurenets
#This line gives access to everybody. PLEASE ADJUST !
255.255.255.0 192.168.9.0

Une fois que ceci est fait, on peut reboot et construire les tables.

reboot
/usr/lib/yp/ypinit -m

On vous demande d'entrer tous les nom de domaine des serveurs esclaves et de valider votre configuration. Étant donné que l'on a pas de serveur escalve (slave), il suffit de valider directement (Ctrl+D).

At this point, we have to construct a list of the hosts which will run NIS
servers.  dlp 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 .
        next host to add:  cli.ynasc.srv
        next host to add: #Ctrl+D
The current list of NIS servers looks like this:

cli

Is this correct? [y/n: y] y
We need a few minutes to build the databases...
Building /var/yp/ynasc.srv/ypservers...
Running /var/yp/Makefile...
make[1]: Entering directory '/var/yp/ynasc.srv'
Updating passwd.byname...
Updating passwd.byuid...
Updating shadow.byname...
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 netgroup...
Updating netgroup.byhost...
Updating netgroup.byuser...
make[1]: Leaving directory '/var/yp/ynasc.srv'

cli.ynasc.srv has been set up as a NIS master server.

Now you can run ypinit -s dlp.server.world on all slave server.

Ajoutons maintenant un groupe (d'ID 2000), et un utilisateur appartenant avec le mot de passe "test" à ce groupe au serveur NIS.

groupadd -g 2000 personnel
useradd -G personnel john
passwd john

Vérifions que l'utilisateur a bien été ajouté en faisant un cat /etc/group

Étant donné que l'on a modifié les fichiers group et passwd, il faut mettre à jour les tables du serveur NIS.

cd /var/yp; make

On peut maintenant lancer le service NIS sur le serveur maître.

service nis start

# Configuration du client NIS

Passons maintenant à la configuration du client NIS.

On réinstalle le package et on spécifie le nom de dommaine du serveur NIS.

Attention : Le nom du serveur doit être le même que celui indiqué lors de la configuration NIS.

apt-get update
apt-get install nis

 On indique en suite le serveur NIS dans /etc/yp.conf

nano /etc/yp.conf
#
# yp.conf       Configuration file for the ypbind process. You can define
#               NIS servers manually here if they can't be found by
#               broadcasting on the local net (which is the default).
#
#               See the manual page of ypbind for the syntax of this file.
#
# IMPORTANT:    For the "ypserver", use IP addresses, or make sure that
#               the host is in /etc/hosts. This file is only interpreted
#               once, and if DNS isn't reachable yet the ypserver cannot
#               be resolved and ypbind won't ever bind to the server.

# ypserver ypserver.network.com
domain ynsac.srv server cli.ynasc.srv

On indique en suite dans /etc/nsswitch.conf quels fichiers synchroniser avec le serveur en rajoutant nis aux fichiers concernés.

nano /etc/nsswitch.conf
passwd: compat nis
group: compat nis
shadow: compat nis
hosts: files dns nis

On redéfini le serveur NIS dans le fichier /etc/hosts 

nano /etc/hosts
127.0.0.1 localhost
192.168.9.235 cli.ynasc.srv cli

Plus qu'a reboot et lancer le service sur le client !

reboot
service nis start

Attention : N'oubliez pas de configurer les interfaces eth0 de vos machines ! En ce qui me concerne, j'ai donné à l'interface eth0 de mon serveur l'adresse IP 192.168.9.253 et 192.168.9.101 à celle du client. 

Si vous utilisez des machines virtuelles, configurez les cartes réseaux de vos machines comme appartenant à un Réseau interne

Vous pouvez testez si la configuration a réussi avec la commande ypwhich qui retourne le FQDN du serveur NIS ou ypdomainname qui retourne le nom du domaine NIS. Vous pouvez executez ces commandes que ce soit au niveau du client ou du serveur.

root@cli:~$ ypwhich
cli.ynasc.srv
root@cli:~$ ypdomainname
ynasc.srv

Maintenant que nous nous sommes assurés que la configuration a réussi, utilisons le serveur NIS pour nous connecter avec les identifiants de l'utilisateur john sur le client NIS. 

Lorsque l'on fait un cat /etc/group au niveau du client NIS, on remarque que l'utilisateur john et que le groupe personnel créé au niveau du serveur ne s'y trouvent pas.

Mais, étant donné que le service NIS est actif au niveau du serveur et du client, on peut tout de même utiliser les identifiants de john pour ne nous connecter à son compte.

# Connexion à un utilisateur défini sur le serveur NIS à partir du client NIS

Au niveau du client, on se déconnecte du compte utilisateur courant

root@cli:~$ exit
srv@cli:~$ exit

Debian GNU/Linux 8 cli tty1

cli login : john #Compte configuré sur le serveur NIS
Password : test

Linux cli 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u4 (2016-02-29) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
No directory, login in with HOME=/
$ #Connexion réussie !

On s'est (enfin) connecté en tant que john ! Si, finalement, par le plus grand des hasards, john aurait envie de changer son mot de passe, il lui suffirait d'executer la commande yppasswd

$ yppasswd
Changing NIS account information for debian on cli.ynasc.srv.
Please enter old password:
Changing NIS password for debian on cli.ynasc.srv.
Please enter new password:
Please retype new password:

The NIS password has been changed on cli.ynasc.srv.

Partager