Page suivante - Page précédente - Table des matières

7. De quoi avez-vous besoin pour configurer NIS ?

7.1 Déterminez si vous êtes un serveur, un esclave ou un client

Pour répondre à cette question, nous pouvons considérer deux cas :

  1. votre machine va être insérée dans un réseau avec des serveurs NIS déjà existants ;
  2. vous n'avez pas encore de serveur NIS dans votre réseau.

Dans le premier cas, vous n'aurez besoin que des programmes clients (ypbind, ypwhich, ypcat, yppoll, ypmatch). Le programme le plus important est ypbind. Ce démon doit toujours être lancé, c'est-à-dire qu'il doit toujours apparaître dans la liste des processus. Comme c'est un démon, il doit être lancé au démarrage de votre machine dans le fichier de démarrage (/etc/rc.local, /etc/init.d/nis, /etc/rc.d/init.d/ypbind). Dès que ypbind fonctionne, votre système devient un client NIS.

Dans le second cas, vous n'avez pas de serveur NIS, donc vous aurez également besoin d'un programme serveur NIS (généralement ypserv). La section 10 ( 10 Configurer un serveur NIS ) décrit comment configurer un serveur NIS sur votre machine Linux en utilisant la version ypserv implémentée par Peter Eriksson et Thorsten Kukuk. On peut remarquer qu'à partir de la version 0.14 de cette implémentation, le concept de maître-esclave dont nous avons parlé dans la section 5.1 est géré.

Il existe également un autre serveur NIS en libre distribution, appelé yps, écrit par Tobias Reber en Allemagne, et qui gére le concept de maître-esclave mais qui a d'autres limitations et qui n'est plus maintenu.

7.2 Les programmes

La bibliothèque /usr/lib/libc.a (version 4.4.2 et supérieure) ou la bibliothèque dynamique partagée /lib/libc.so.x contient tous les appels systèmes correspondants pour compiler sans problème les programmes clients et serveurs NIS. Pour la glibc 2.x, vous aurez également besoin de /lib/libnsl.so.1.

Certaines personnes ont signalé que NIS ne fonctionne qu'avec /usr/lib/libc.a version 4.5.21 et supérieure, donc, pour plus de sûreté, évitez d'utiliser des bibliothèques plus anciennes. Les clients NIS peuvent être récupérés sur les sites suivants :

 Site                   Repertoire                      Nom du fichier
 ftp.kernel.org        /pub/linux/utils/net/NIS         yp-tools-2.0.tar.gz
 ftp.kernel.org        /pub/linux/utils/net/NIS         ypbind-mt-1.2.tar.gz
 ftp.kernel.org        /pub/linux/utils/net/NIS         ypbind-3.3.tar.gz
 sunsite.unc.edu       /pub/Linux/system/Network/admin  yp-clients-2.2.tar.gz
 ftp.uni-paderborn.de  /linux/local/yp                  yp-clients-2.2.tar.gz
 ftp.uni-paderborn.de  /linux/local/yp                  ypbind-3.3.tar.gz

Une fois que vous aurez récupéré ces programmes, suivez les instructions qui sont livrées avec. yp-clients 2.2 doit être utilisé avec les bibliothèques libc4 et libc5 jusqu'à la version 5.4.20. Les libc 5.4.21 et glibc 2.x nécessitent yp-tools 1.4.1. La nouvelle version yp-tools 2.0 fonctionnera avec toutes les libc Linux. Vous ne devriez pas utiliser les libc 5.4.21 - 5.4.35 car elles présentent de nombreux défauts. Utilisez la libc 5.4.36 ou une version supérieure, sinon, la plupart des programmes de YP ne fonctionneront pas. ypbind 3.3 fonctionnera également avec toutes les bibliothèques. Vous ne devriez jamais utiliser la version ypbind qui est fournie dans yp-clients 2.2.

7.3 Le démon ypbind

Nous supposons que vous avez compilé correctement les programmes et que vous êtes prêt à les installer. L'endroit où installer le démon ypbind est le répertoire /usr/sbin. Certains peuvent vous dire que vous n'avez pas besoin de ypbind sur un système qui utilise NYS. C'est faux : ypwhich et ypcat en ont besoin.

Vous devez réaliser cette opération en tant que super-utilisateur (i.e. "root"), bien sûr. Les autres binaires (ypwhich, ypcat, yppoll, ypmatch) doivent être placés dans un répertoire accessible à tous les utilisateurs, normalement c'est le répertoire /usr/bin qui est utilisé.

Le programme ypbind a besoin d'un fichier de configuration /etc/yp.conf. Vous pouvez y indiquer, en dur, le nom du serveur NIS. Pour plus d'informations, consultez la page de manuel de ypbind(8). Vous aurez également besoin de ce ficher pour NYS. Un court exemple :

 ypserver voyager
 ypserver ds9

Si le système est capable de résoudre les noms de machine sans NIS, vous pouvez utiliser le nom de la machine. Dans le cas contraire, utilisez l'adresse IP.

Il est souhaitable de tester ypbind avant de l'inclure dans les fichiers de /etc/rc.d/. Pour tester ypbind faites ceci :

  • Vérifiez que votre nom de domaine est défini. Si ce n'est pas le cas, faites
     /bin/domainname-yp nis.domain
    
    nis.domain doit être une chaîne, qui n'a normalement RIEN A VOIR avec le nom de votre machine ! La raison est que cela rend plus difficile le travail des pirates pour trouver les mots de passe de la base de données du serveurs NIS. Si vous ne connaissez pas le nom du domaine de votre réseau, contactez votre administrateur système.
  • Lancez /usr/sbin/rpc.portmap s'il ne tourne pas déjà.
  • Créez le répertoire /var/yp s'il n'existe pas.
  • Lancez /usr/sbin/ypbind
  • Utilisez la commande rpcinfo -p localhost pour vérifier qu'ypbind est capable d'enregistrer ses services dans portmapper. La commande rpcinfo devrait produire un message de ce style :
     program vers proto   port
     100000    2   tcp    111  portmapper
     100000    2   udp    111  portmapper
     100007    2   udp    637  ypbind
     100007    2   tcp    639  ypbind
     300019    1   udp    660
    
  • Vous pouvez également lancer rpcinfo -u localhost ypbind. Cette commande devrait alors produire :
     program 100007 version 2 ready and waiting
    

Vous devriez alors être capable d'utiliser les programmes clients tels que ypcat, etc. Par exemple, ypcat passwd vous donne la liste des mots de passe (chiffrés !) de la base de données NIS.

IMPORTANT : si vous avez évité la procédure de test, vérifiez que vous avez positionné le nom de votre domaine, et créé le répertoire :

 /var/yp

Ce répertoire DOIT exister pour qu'ypbind soit correctement lancé.

Pour vérifier que le nom de domaine est correctement configurer, utilisez le programme /bin/ypdomainname, fourni avec yp-tools 2.0. Il utilise la fonction yp_get_default_domain, qui est plus restrictive. Elle n'autorise pas, par exemple, le nom de domaine "(none)", qui est celui par défaut avec Linux et qui crée de nombreux problèmes.

Si le test a fonctionné, vous pouvez alors modifier les fichiers /etc/rc.d sur votre système pour qu'ypbind soit lancé lors de l'amorçage de la machine et pour que votre machine se comporte comme un client NIS. Assurez-vous que le nom de domaine soit configuré lors de l'amorçage.

Normalement, tout est prêt. Relancez votre machine et observez les messages pour voir si ypbind est lancé.

7.4 Configurer un client NIS en utilisant le NIS traditionnel

Pour la recherche de noms de machines, vous devez ajouter "nis" dans la ligne "host" du fichier /etc/host.conf. Lisez la page de manuel "resolv+.8" pour plus de détails.

Ajoutez ensuite la ligne suivante dans le fichier /etc/passwd de vos machines clientes :

+::::::

Vous pouvez également utiliser les caractères + et - pour inclure/exclure ou modifier certains utilisateurs. Si vous souhaitez exclure l'utilisateur guest, ajoutez -guest à votre fichier /etc/passwd. Si vous souhaitez utiliser un interpréteur de commandes différent (par exemple ksh) pour l'utilisateur "linux", ajoutez la ligne +linux::::::/bin/ksh. Les champs que vous ne souhaitez pas modifier doivent rester vides. Vous pouvez également utiliser les Netgroups pour gérer les utilisateurs.

Par exemple, pour n'utiliser que les login miquels, dth et ed, ainsi que tous les membres du netgroup sysadmin, tout en ayant quand même accès aux comptes des autres utilisateurs :

 +miquels:::::::
 +ed:::::::
 +dth:::::::
 +@sysadmins:::::::
 -ftp
 +:*::::::/etc/NoShell

Remarquez qu'avec Linux, vous pouvez également surcharger le champ mot de passe, comme nous l'avons fait dans cet exemple. Nous avons également supprimé le login "ftp" : cet utilisateur n'est plus connu sur la machine et le ftp anonyme ne fonctionnera pas.

Le netgroup peut être défini de la sorte :

sysadmins (-,software,) (-,kukuk,)

IMPORTANT : la fonctionnalité de netgroup n'est implémentée qu'à partir de la libc version 4.5.26. Mais si vous possédez une libc plus ancienne que la 4.5.26, tout utilisateur dans la base de donnée des mots de passe peut accéder à la machine linux si vous lancez ypbind.

7.5 Configurer un client NIS en utilisant NYS

Il vous suffit d'avoir le fichier de configuration NIS (/etc/yp.conf) qui pointe sur le (ou les) serveur(s) adéquat(s), ainsi qu'un fichier /etc/nsswitch.conf correctement configuré.

Vous devriez également installer ypbind. Il n'est pas nécessaire pour la libc, mais les outils NIS(YP) en ont besoin.

Si vous souhaitez utiliser les fonctionnalités d'inclusion/exclusion d'utilisateurs (+/-guest/+@admins), vous devez utiliser "passwd: compat" et "group: compat". Notez qu'il n'existe pas de "shadow: compat" ! Vous devez utiliser "shadow: files nis" dans ce dernier cas.

Les sources de NYS sont fournies avec les sources de libc5. Lorsque vous lancez la configuration pour la première fois, répondez "NO" à la question "Values correct" (NDT: en français, "Est-ce que les valeurs sont correctes ?"), puis répondez "YES" à la question "Build a NYS libc from nys" (NDT: en français, "Construire une libc NYS à partir de nys ?").

7.6 Configurer un client NIS en utilisant la glibc 2.x

La glibc utilise la version "NIS traditionnelle", donc vous devrez lancer ypbind. Le fichier /etc/nsswitch.conf doit également être correctement configuré. Si vous utilisez le mode compat pour les tables passwd, shadow ou group, vous devez ajouter le caractère "+" à la fin de ces fichiers, et vous pourrez alors utiliser les fonctionnalités d'inclusion/d'exclusion d'utilisateurs. La configuration est exactement la même que sous Solaris 2.x.

7.7 Le fichier nsswitch.conf

Le fichier de configuration /etc/nsswitch.conf détermine l'ordre dans lequel sont effectuées les recherches de certaines informations, en fonction des données et des services, de la même manière que le fichier /etc/host.conf détermine la façon dont les recherches de noms de machines se font. Par exemple, la ligne

 hosts: files nis dns

indique que la recherche d'un nom de machine sera d'abord effectuée dans le fichier local /etc/hosts, puis dans la table NIS et enfin en utilisant le DNS (/etc/resolv.conf et named). Si aucune machine ne correspond, alors une erreur est renvoyée. Ce fichier doit être accessible en lecture pour tous les utilisateurs !

Voici un bon exemple de fichier /etc/nsswitch.conf pour NIS:

#
# /etc/nsswitch.conf
#
# Un exemple de configuration de NSS (Name Service Switch). Ce fichier doit
# etre trie en mettant en tete les services les plus utilises.
#
# L'entree '[NOTFOUND=return]' signifie que la recherche d'une entree
# doit s'arreter si la recherche dans l'entree precedente n'a rien donne
# Notez que si la recherche echoue pour tout autre raison
# (par exemple, le serveur NIS ne repond pas), alors la recherche continue
# avec l'entree suivante.
#
# Les entrees connues sont :
#
#       nisplus                 NIS+ (NIS version 3)
#       nis                     NIS (NIS version 2), connu comme YP
#       dns                     DNS (Domain Name Service)
#       files                   Fichiers locaux
#       db                      Bases de donnees /var/db
#       [NOTFOUND=return]       Arret de la recherche si l'on n'a rien trouve
#
passwd:     compat
group:      compat
shadow:     compat
passwd_compat: nis
group_compat: nis
shadow_compat: nis
hosts:      nis files dns
services:   nis [NOTFOUND=return] files
networks:   nis [NOTFOUND=return] files
protocols:  nis [NOTFOUND=return] files
rpc:        nis [NOTFOUND=return] files
ethers:     nis [NOTFOUND=return] files
netmasks:   nis [NOTFOUND=return] files
netgroup:   nis
bootparams: nis [NOTFOUND=return] files
publickey:  nis [NOTFOUND=return] files
automount:  files
aliases:    nis [NOTFOUND=return] files

Les entrées passwd_compat, group_compat et shadow_compat ne sont gérées qu'avec la glibc 2.x. S'il n'y a pas d'entrée shadow dans /etc/nsswitch.conf, la glibc utilisera l'entrée passwd pour effectuer ses recherches. Il existe certaines entrées supplémentaires avec la glibc comme hesoid. Pour plus d'informations, consultez la documentation de la glibc.


Page suivante - Page précédente - Table des matières