Debian logo [inetdoc.LINUX]

4. Configuration du service NIS

4.1. Configuration du serveur NIS

Il faut installer le même paquet Debian sur le serveur et le client. C'est en éditant le fichier de configuration du service que l'on attribue le rôle client ou serveur.

Lors de l'installation du paquet, le rôle attribué par défaut est client. Pour installer un serveur, il faut laisser l'installation se poursuivre jusqu'à expiration du délai d'attente de recherche du serveur ... qui n'est pas encore configuré. Voici une capture d'écran :

# apt-get install nis
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Les NOUVEAUX paquets suivants seront installés :
  nis
0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
<snipped/>
Préconfiguration des paquets ...
Sélection du paquet nis précédemment désélectionné.
(Lecture de la base de données... 144540 fichiers et répertoires déjà installés.)
Dépaquetage de nis (à partir de .../archives/nis_3.13-2_i386.deb) ...
Paramétrage de nis (3.13-2) ...
Setting NIS domainname to: nis.lab1
Starting NIS services: ypbind [binding to YP server .......... backgrounded]

1

Lors de l'installation du paquet, on attribue un nom de domaine NIS. Dans cette exemple, le domaine est : nis.lab. Ce nom de domaine est à priori sans rapport avec le service de résolution des noms de domaine de l'Internet DNS.

On attribue le rôle en éditant le fichier /etc/default/nis :

rubis:~# head -10 /etc/default/nis
#
# /etc/defaults/nis     Configuration settings for the NIS daemons.
#

# Are we a NIS server and if so what kind (values: false, slave, master)
NISSERVER=master1

# Are we a NIS client (i.e. start ypbind?)
NISCLIENT=true

1

Par défaut, la valeur est false. Ici, on applique la valeur master pour transformer le poste en serveur NIS maître.

On désigne manuellement le serveur en éditant le fichier /etc/yp.conf :

rubis:~# cat /etc/yp.conf
<snipped/>
#
# 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
ypserver 127.0.0.1

On peut ensuite relancer le service :

rubis:~# /etc/init.d/nis stop
rubis:~# /etc/init.d/nis start
Starting NIS services: ypserv yppasswdd ypxfrd ypbind

Contrôle de la liste des services disponibles à partir du gestionnaire de requêtes RPC :

rubis:~# rpcinfo -p
   program no_version protocole  no_port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    391002    2   tcp    903  sgi_fam
    100024    1   udp    786  status
    100024    1   tcp    789  status
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100021    1   udp   1041  nlockmgr
    100021    3   udp   1041  nlockmgr
    100021    4   udp   1041  nlockmgr
    100021    1   tcp   1029  nlockmgr
    100021    3   tcp   1029  nlockmgr
    100021    4   tcp   1029  nlockmgr
    100005    1   udp    710  mountd
    100005    1   tcp    713  mountd
    100005    2   udp    710  mountd
    100005    2   tcp    713  mountd
    100005    3   udp    710  mountd
    100005    3   tcp    713  mountd
    100004    2   udp    628  ypserv
    100004    1   udp    628  ypserv
    100004    2   tcp    634  ypserv
    100004    1   tcp    634  ypserv
    100009    1   udp    630  yppasswdd
 600100069    1   udp    633  fypxfrd
 600100069    1   tcp    635  fypxfrd
    100007    2   udp    641  ypbind
    100007    1   udp    641  ypbind
    100007    2   tcp    644  ypbind
    100007    1   tcp    644  ypbind

4.2. Exemple d'information publiée par le service NIS

La liste des hôtes du domaine NIS est l'exemple le plus immédiat d'information, autre que les comptes utilisateurs, publiée par le service. Il s'agit donc de compléter le fichier /etc/hosts sur le serveur NIS pour qu'il contienne les adresses IP des hôtes de l'architecture type.

rubis:~# cat /etc/hosts
127.0.0.1       localhost
192.168.1.4     rubis
192.168.1.7     saphir

4.3. Création des bases de données du service NIS

Une fois le serveur en place, il faut créer les bases de données distribuées par le service NIS. Ces bases étant stockées dans le répertoire /var/yp/, c'est à partir de ce répertoire que toutes les opérations suivantes doivent être effectuées.

Pour commencer, on édite le fichier Makefile qui contient l'ensemble des directives de manipulation des bases. On s'intéresse plus particulièrement à 2 sections du fichier.

UIDs, GIDs

On fixe arbitrairement la valeur minimum des uid et gid à 2000 de façon à éviter tout «mélange» avec la base de données des comptes utilisateur locaux du serveur NIS.

# We do not put password entries with lower UIDs (the root and system
# entries) in the NIS password database, for security. MINUID is the
# lowest uid that will be included in the password maps. If you
# create shadow maps, the UserID for a shadow entry is taken from
# the passwd file. If no entry is found, this shadow entry is
# ignored.
# MINGID is the lowest gid that will be included in the group maps.
MINUID=2000
MINGID=2000
auto.master, auto.home

On complète la liste des bases ou «cartes» gérées par le service NIS en y ajoutant les fichiers de configuration de l'automontage NFS. De cette façon, on évite d'avoir à configurer le service d'automontage sur tous les postes clients.

# If you don't want some of these maps built, feel free to comment
# them out from this list.

ALL =   passwd group hosts rpc services netid protocols netgrp
ALL +=  auto.master auto.home

Comme la configuration de l'automontage n'est pas encore traitée, on se contente de créer des fichiers vides de façon à ne pas bloquer le fonctionnement du service NIS.

rubis:/var/yp# touch /etc/auto.master
rubis:/var/yp# touch /etc/auto.home

Une fois le fichier Makefile prêt, on lance la création des bases avec la commande ypinit.

rubis:/var/yp# /usr/lib/yp/ypinit -m

At this point, we have to construct a list of the hosts which will run NIS
servers.  rubis 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:  rubis
        next host to add:
The current list of NIS servers looks like this:

rubis

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

rubis has been set up as a NIS master server.

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

4.4. Création du compte utilisateur de test NIS

Pour les tests sur les services NIS et NFS on utilise un compte utilisateur spécifique baptisé etu-nis.

1

On désigne un nouveau répertoire racine pour les comptes utilisateurs distribués par le service NIS. Ce répertoire sera utilisé par le service d'automontage NFS.

2

Conformément à la règle adoptée lors de la création des bases NIS, on doit fixer une valeur d'uid supérieure ou égale à 2000 pour tous les comptes utilisateurs distribués.

rubis:/var/yp# mkdir /home/nis
rubis:/var/yp# adduser --home /home/nis/etu-nis1 --uid 20002 etu-nis
Ajout de l'utilisateur etu-nis...
make: Entering directory `/var/yp'
make[1]: Entering directory `/var/yp/nis.lab'
Updating netid.byname...
make[1]: Leaving directory `/var/yp/nis.lab'
make: Leaving directory `/var/yp'
Adding new group `etu-nis' (2000).
make: Entering directory `/var/yp'
make[1]: Entering directory `/var/yp/nis.lab'
Updating group.byname...
Updating group.bygid...
Updating netid.byname...
make[1]: Leaving directory `/var/yp/nis.lab'
make: Leaving directory `/var/yp'
Adding new user `etu-nis' (2000) with group `etu-nis'.
make: Entering directory `/var/yp'
make[1]: Entering directory `/var/yp/nis.lab'
Updating passwd.byname...
Updating passwd.byuid...
Updating netid.byname...
Updating shadow.byname...
make[1]: Leaving directory `/var/yp/nis.lab'
make: Leaving directory `/var/yp'
Création du répertoire personnel /home/nis/etu-nis.
Copie des fichiers depuis /etc/skel
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Modification des informations relatives à l'utilisateur etu-nis
Entrez la nouvelle valeur ou « Entrée » pour conserver la valeur proposée
Nom complet []: Etudiant NIS
No de bureau []:
Téléphone professionnel []:
Téléphone personnel []:
Autre []:
Ces informations sont-elles correctes ? [o/N] o

D'une façon générale, à chaque modification d'un objet de la base de données du service NIS, il faut relancer la scrutation des directives listées dans le Makefile.

rubis:/var/yp# make
make[1]: Entering directory `/var/yp/nis.lab'
Updating passwd.byname...
Updating passwd.byuid...
Updating netid.byname...
Updating shadow.byname...
make[1]: Leaving directory `/var/yp/nis.lab'

4.5. Configuration du client NIS

Côté client, il faut aussi installer le paquet Debian nis et reprendre le nom de domaine choisi lors de la configuration du serveur.

saphir:~# apt-get install nis
saphir:~# nisdomainname
nis.lab
saphir:~# ypwhich
rubis

Une fois le démon ypbind lancé, on effectue un test d'accès à une base distribuée via NIS :

saphir:~# ypcat hosts
127.0.0.1       localhost
192.168.1.7     saphir
192.168.1.4     rubis

On suit ensuite les indications données dans les deux guides de configuration NIS : section Setting Up the NIS Client du guide The Linux NIS(YP)/NYS/NIS+ HOWTO et|ou section HOW TO SETUP A LOCAL NIS CLIENT de la Documentation du paquet Debian nis.

On complète la configuration pour que les utilisateurs NIS puissent se connecter sur le client :

saphir:~# echo "+::::::" >>/etc/passwd
saphir:~# echo "+::::::::" >>/etc/shadow
saphir:~# echo "+:::" >>/etc/group

Pour tester l'authentification de l'utilisateur test etu-nis, soit on utilise la commande su etu-nis, soit on utilise une console. Voici ce que l'on obtient sur la console n° 2 :

Debian GNU/Linux 3.1 saphir tty2

saphir login: etu-nis
Password:
Linux saphir 2.6.12-rc3 #3 Sun May 1 17:29:27 CEST 2005 i686 GNU/Linux

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, logging in with HOME=/1
etu-nis@saphir:/$

1

L'authentification est un succès mais le répertoire utilisateur est inaccessible puisqu'il n'a pas été exporté via NFS.