<!-- Traduction : Frédéric VEYNACHTER -- >
<!-- frederic.veynachter@hol.fr -- >
<!doctype linuxdoc system>

<!-- Ceci est le Linux NIS-HOWTO. Il décrit comment installer et configurer
        Linux en client-serveur NIS et en client NIS+.-->

<article>

<title>Le Linux NIS(YP)/NYS/NIS+ HOWTO
<author>Thorsten Kukuk
<date>Version 0.12, 12 Juin 1998

<abstract>
Ce document décrit la façon de configurer Linux en client de NIS(YP)
ou de NIS+, et la façon d'installer un serveur NIS.
</abstract>

<!-- Table of contents -->
<toc>

<sect>Version française<p>

Ce document constitue la version française du NIS-HOWTO,
adaptation réalisée par Frédéric Veynachter 
(frederic.veynachter@hol.fr), le 26 juillet 1998, fortement inspirée
de la traduction précédemment réalisée par Éric Dumas (dumas@Linux.EU.Org), 
le 19 Novembre 1997.

Vous pouvez consulter ce document sur les sites suivants :
<itemize>
<item> <url url="http://www.freenix.fr/linux/HOWTO/"
            name="http://www.freenix.fr/linux/HOWTO"> 
<item> <url url="ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO/"
name="ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO">
</itemize>
ainsi que leurs nombreux miroirs.

Pour plus de renseignements concernant la traduction en langue française
des documents du LDP (<em>Linux Documentation Project</em>), consultez
le document <sq>Liste-des-HOWTO</sq> que l'on trouve aux mêmex endroits.

Les différents sites conseillés dans  ce document possèdent
sûrement des miroirs plus proches de chez vous, comme par exemple
ftp.lip6.fr, ftp.loria.fr ... utilisez-les !

<sect>Introduction

<p>
Les machines sous Linux sont de plus en plus souvent installées et connectées
dans des réseaux informatiques.Pour simplifier l'administration système,
la plupart des réseaux (surtout ceux qui sont fondés sur du matériel Sun)
fonctionnent avec le <em>Network Information Service</em>. Les machines Linux peuvent
tirer de nombreux avantages des services NIS existant, ou fournir elles-mêmes ces
services. Elles peuvent également se comporter comme des clients NIS+, mais il 
s'agit encore d'une version béta.

Ce document tente de répondre aux questions concernant la mise en place et la
configuration de NIS(YP) et de NIS+ sur votre machine Linux. N'oubliez pas de lire
la section concernant <ref id="portmapper" name="le Portmapper RPC">.

Le NIS-Howto est rédigé et maintenu par:

<quote>
        Thorsten Kukuk, <tt/kukuk@vt.uni-paderborn.de/
</quote>

La version initiale de ce document a été réalisée par:

<tscreen><verb>
Andrea Dell'Amico       <adellam@ZIA.ms.it>
Mitchum DSouza          <Mitch.DSouza@NetComm.IE>
Erwin Embsen            <erwin@nioz.nl>
Peter Eriksson          <peter@ifm.liu.se>
</verb></tscreen>

que nous tenons à remercier.

<sect1>Nouvelles versions de ce document

<p>
Vous pourrez toujours trouver la dernière version de ce document sur le web
via l'URL <url url="http://sunsite.unc.edu/mdw/HOWTO/NIS-HOWTO.html"
            name="http://sunsite.unc.edu/mdw/HOWTO/NIS-HOWTO.html">.

Les nouvelles versions de ce document seront également présentes sur différents
sites ftp et web consacrés à Linux, y compris sur la page principale du LDP 
(Linux Documentation Project).

Des liens vers les traductions de ce document peuvent être trouvés à l'adresse
<url url="http://www-vt.uni-paderborn.de/~kukuk/linux/nis-howto.html"
            name="http://www-vt.uni-paderborn.de/~kukuk/linux/nis-howto.html">.

<sect1>Avertissement

<p>
Même si ce document rassemble le maximum de données selon notre connaissance,
il peut contenir, et contient sans doute, certaines erreurs. Nous vous demandons de
lire attentivement tous les fichiers README qui sont livrés avec les outils décrits 
dans ce document, pour avoir plus de détails et une information plus précise.
Nous essayerons, dans la mesure du possible, d'éviter que des erreurs se glissent 
ans ce document.

<sect1>Retour d'information et corrections

<p>
Si vous avez des questions ou des commentaires à propos de ce document, n'hésitez 
pas à envoyer un courrier électronique à 
<htmlurl url="mailto:kukuk@vt.uni-paderborn.de" name="kukuk@vt.uni-paderborn.de">.
J'accepte volontiers toutes les suggestions ou critiques. Si vous trouvez une anomalie
ou une erreur dans ce document, merci de me le faire savoir, pour que je puisse la 
corriger dans la prochaine version.

Merci de ne pas m'envoyer de questions concernant des problèmes spécifiques à
une distribution de Linux. Je ne les connais pas toutes. J'essayerai néanmoins
d'intégrer toute solution qui me sera envoyée.

<sect1>Remerciements

<p>
Nous voudrions remercier toutes les personnes qui ont contribué 
(directement ou indirectement) à ce document. Par ordre alphabétique :

<tscreen><verb>
Byron A Jeff            <byron@cc.gatech.edu>
Miquel van Smoorenburg  <miquels@cistron.nl>
</verb></tscreen>

Theo de Raadt &lt;deraadt@theos.com> est à l'origine du code yp-clients. 
Swen Thuemmler &lt;swen@uni-paderborn.de> a porté ce code pour Linux et il a
également porté le code yp-routines pour la libc (toujours fondé sur le
travail de Theo). Thorsten Kukuk a totalement ré-écrit toutes les routines
NIS(YP) et NIS+ pour la GNU libc 2.x.

<sect>Glossaire et informations générales

<sect1>Glossaire des termes employés
<p>
Dans ce document, bon nombre d'acronymes sont employés. Voici la liste des plus
utilisés, avec une brève explication.

<descrip>
<tag/DBM/DataBase Management (Gestion de la base de données): bibliothèque de fonctions
        pour maintenir les clefs et le contenu de la base de données.

<tag/DLL/Dynamically Linked Library (Bibliothèque liée dynamiquement): bibliothèque 
        de fonctions chargées dynamiquement à l'exécution.

<tag>domainname</tag> Nom du domaine : nom <sq>clef</sq> utilisé par
        les clients NIS pour qu'ils puissent trouver un serveur NIS convenable qui gère
        la clef du domaine. Notez que cela n'a rien à voir avec le <sq>domaine</sq> DNS 
        (nom de la machine) des machines.

<tag>FTP</tag> File Transfer Protocol  (Protocole de transfert de fichiers) : 
        protocole utilisé pour transférer des fichiers entre deux 
        ordinateurs.

<tag>libnsl</tag>  Name services library  : bibliothèque 
        d'appels systèmes (tels que <tt>getpwnam, getservbyname, ...</tt>)
        sur les systèmes Unix SVR4. La GNU libc utilise cette bibliothèque
        pour les fonctions NIS (YP) et NIS+.

<tag>libsocket</tag> Bibliothèque de fonctions de manipulation de sockets
        <tt>socket, bind, listen, ...</tt> sur les systèmes SVR4.

<tag>NIS</tag>  Network Information Service (Service d'information du réseau): 
        service qui permet à certaines informations d'être connues par toutes les
        machines disponibles sur le réseau. Ce service est géré dans la bibliothèque
        standard de la libc Linux. Il est considéré par la suite comme étant le
        <sq>NIS traditionnel</sq>.

<tag>NIS+</tag>  Network Information Service (Plus...)   :
        en gros, version de NIS améliorée. NIS+ a été conçu par Sun Microsystems Inc. 
        pour remplacer NIS, avec un niveau de sécurité supérieur et une meilleure
        gestion pour les grosses installations.

<tag>NYS</tag>Il s'agit du nom d'un projet de développement et de standardisation
        pour NIS+, YP et Switch. 
        Il est dirigé par Peter Eriksson (&lt;peter@ifm.liu.se&gt;).
        Il contient entre autres choses une réimplémentation complète
        du code de NIS (c'est-à-dire YP) qui utilise
        les fonctionnalités <em> Name Services Switch</em> de 
        la bibliothèque NYS.

<tag/NSS/Name Service Switch (littéralement, commutation des noms de service): le fichier 
        /etc/nsswitch.conf détermine l'ordre de recherche d'informations en fonction 
        des services demandés.

<tag>RPC</tag> Remote Procedure Call (Appel de procédure distante): les routines RPC 
        permettent aux programmes C d'appeler d'autres machines à travers le réseau.
        Lorsque des personnes parlent de RPC, elles parlent souvent en fait
        de la version Sun RPC.

<tag>YP</tag> Yellow Pages(tm)  : marque déposée par 
        British Telecom. (les pages jaunes... comme les nôtres !).

<tag>TCP-IP</tag>  Transmission Control Protocol/Internet Protocol :
        protocole de communication le plus fréquemment
        utilisé sur les machines Unix.
</descrip>

<sect1>Quelques informations générales

<p>
Les quatre lignes ci-dessous sont une citation du manuel d'administration réseau de
 Sun&tm; System.

<tscreen><verb>
    "NIS was formerly known as Sun Yellow Pages (YP) but
     the name Yellow Pages(tm) is a registered trademark
     in the United Kingdom of British Telecom plc and may
     not be used without permission."

    "NIS etait formellement connu sous le nom de 
     Yellow Pages (YP) (Pages Jaunes) mais le nom 
     Yellow Pages(tm) est une marque enregistree au 
     Royaume Uni par British Telecom et ne peut etre 
     utilisee sans autorisation."
</verb></tscreen>

NIS est l'abréviation pour <em>Network Information Service</em> (Service d'Information Réseau).
Son but est de fournir des informations, qui doivent être connues sur l'ensemble du réseau,
à toutes les machines connectées. Les informations susceptibles d'être distribuées
par NIS sont:

<itemize>
<item>noms de login, mots de passe, répertoires d'ouverture (/etc/passwd)
<item>renseignements sur les groupes d'utilisateurs (/etc/group)
</itemize>

Par exemple, si votre mot de passe et les informations s'y rattachant sont enregistrés dans la
base de données NIS, vous pourrez vous loguer sur toutes les machines du réseau sur 
lesquelles un client NIS est lancé.

Sun est une marque déposée de Sun Microsystems Inc, brevetée par SunSoft, Inc.


<sect>NIS ou NIS+ ?

<p>
Le choix entre NIS et NIS+ est facile à faire : utilisez NIS tant que vous n'avez pas besoin
d'utiliser NIS+ ou si vous avez des besoins de sécurité importants. NIS+ est bien plus 
problématique à administrer (c'est plutôt facile à manipuler du côté du client,
mais en ce qui concerne le côté serveur, c'est une horreur). Un autre problème est que le
support de NIS+ pour Linux est encore en cours de développement : vous devrez avoir la toute
dernière version de glibc ou attendre la sortie de glibc 2.1. Il existe un portage du NIS+
glibc pour libc5, qui consiste à installer une libc de remplacement.

<sect1>libc 4/5 avec "NIS traditionnel" ou NYS ?

<p>
Le choix entre "NIS traditionnel" ou le code NIS dans la bibliothèque NYS est un choix entre
paresse et maturité d'un côté, flexibilité et amour de l'aventure de l'autre.

Le code "NIS traditionnel" se trouve dans la bibliothèque C standard, existe depuis fort longtemps,
et souffre parfois de son age et de son léger manque de souplesse.

Le code NIS de la bibliothèque NYS vous oblige à recompiler la bibliothèque libc pour y
inclure le code NYS (à moins que vous ne trouviez une version de libc précompilée
chez quelqu'un qui l'a déjà fait).

Une autre différence est que le code "NIS traditionnel" gère en partie les groupes de
réseaux NIS (<em>Netgroups</em>), alors que le code NYS ne le fait pas. D'un autre côté,
le code NYS vous permet d'utiliser les mots de passe Shadow d'une manière transparente.
Le code "NIS traditionnel" ne permet pas d'utiliser les mots de passe Shadow sur NIS.

Vous pouvez cependant oublier tout ça si vous utilisez la nouvelle bibliothèque GNU C 2.x
(alias libc6). Elle comporte un vrai support de NSS (<em>Name Switch Service</em>), ce qui la 
rend vraiment souple, et elle est capable de gérer les "maps" NIS/NIS+ suivantes : aliases, 
ethers, group, hosts, netgroups, networks, protocols, publickey, passwd, rpc, services
et shadow. La bibliothèque GNU C ne pose aucun problème avec les mots de passe Shadow sur NIS.

<sect>Comment ça marche ?

<sect1>Comment fonctionne NIS(YP) ?

<p>
A l'intérieur d'un réseau, il doit y avoir au moins une machine
faisant office de serveur NIS. Vous pouvez avoir plusieurs serveurs
NIS, chacun gérant plusieurs <sq>domaines</sq> NIS, ou bien vous
pouvez avoir des serveurs NIS coopératifs. Dans ce cas, l'un d'entre eux est dit
serveur NIS <em>maître</em>, les autres étant serveurs
NIS esclaves. Vous pouvez également mélanger les deux possibilités.

Les serveurs esclaves n'ont qu'une copie de la base de données et la
reçoivent du serveur NIS maître lorsque des changement sont effectués
dans la base de données. En fonction du nombre de machine et de la
fiabilité de votre réseau, vous pouvez décider d'installer un ou
plusieurs serveurs esclaves. Lorsqu'un serveur NIS tombe en panne ou
bien s'il est trop long pour répondre aux requêtes, un client NIS
connecté à ce serveur va alors essayer d'en trouver un en état de
marche.

Les bases de données NIS sont au format DBM, un dérivé des bases de données
ASCII. Par exemple, les fichiers <tt>/etc/passwd</tt> et <tt>/etc/group</tt>  
peuvent être directement convertis dans le format DBM en utilisant un 
programme de conversion <em>ASCII-to-DBM</em> (<tt>makedbm</tt> est 
inclus dans les programmes du serveur). Le serveur NIS maître devrait 
avoir les deux types : la base ASCII et la base DBM.

Les serveurs esclaves seront avertis de tout changement dans les tables
NIS (grâce au programme <tt>yppush</tt>), et effectueront automatiquement les changements
nécessaires pour synchroniser leurs bases de données. Les clients NIS n'ont
pas besoin d'effectuer cette opération puisqu'ils communiquent 
tout le temps avec le serveur NIS pour lire les informations rangées 
dans les bases de données DBM.

L'auteur des clients YP pour Linux nous a informé que la nouvelle
version de <tt>ypbind</tt> (située dans l'archive <tt>ypbind-3.3.tar.gz</tt>)
permet d'indiquer le serveur NIS à contacter dans un fichier de configuration,
ce qui évite d'effectuer un <em>broadcast</em> (ce qui n'est pas
sécurisé car n'importe qui peut installer un serveur NIS et peut donc
répondre aux requêtes...).

<sect1>Comment fonctionne NIS+ ?

<p>
NIS+ est une nouvelle version du service d'information réseau
de Sun. La différence la plus notable entre NIS et NIS+ est
que NIS+ est capable de gérer des données chiffrées ainsi que
l'authentification <em>via</em> les RPC sécurisés.

Le modèle de nommage de NIS+ est basé sur une structure 
arborescente. Chaque noeud de l'arbre correspond à un objet NIS+, à
partir duquel nous avons six types :
directory, entry, group, link, table et private (répertoire,
entrée, groupe, lien, table et privé).

Le répertoire NIS+ qui constitue la racine de l'espace de nommage
NIS+ est appelé le répertoire racine. Il existe deux répertoires
spéciaux NIS+ : org_dir et groups_dir. Le premier regroupe toutes
les tables d'administration, telles que passwd, hosts, et mail_aliases.
Le second répertoire contient les objets groupe NIS+ qui sont utilisés
pour contrôler les accès. L'ensemble des répertoires org_dir, groups_dir 
et leurs parents sont considérés comme étant un domaine NIS+.

<sect>Le RPC Portmapper<label id=portmapper>

<p>
Pour lancer n'importe lequel des programmes mentionnés ci-dessous, vous
aurez besoin de lancer le programme <tt>/usr/sbin/rpc.portmap</tt>.
Certaines distributions de <bf>Linux</bf> ont déjà dans le code
du script <tt>/etc/rc.d/rc.inet2</tt>  ce qui est nécessaire pour lancer
ce démon.  Tout ce que vous avez à faire, c'est de décommenter ce qui
est nécessaire puis à rebooter votre machine pour l'activer.
Lisez la documentation de votre distribution pour plus de détails.

Le RPC portmapper (portmap(8)) est un serveur qui convertit les
numéros des programmes RPC en numéros de ports pour le protocole
TCP/IP (ou UDP/IP). Il doit être lancé dans un certain ordre pour 
réaliser les appels RPC (ce que fait le programme client NIS/NIS+)
vers les serveurs (comme par exemple un serveur NIS/NIS+) sur cette machine.
Lorsque le serveur RPC est lancé, il va indiquer au démon <tt>portmap</tt>
quel numéro de port il scrute, et quels sont les numéros de programmes RPC
avec lesquels il est prêt à travailler. Lorsque le client souhaite réaliser
un appel RPC à certain numéro de programme, il contacte dans un premier 
temps <tt>portmap</tt> sur le serveur de la machine pour déterminer le 
numéro de port où il doit alors envoyer les paquets RPC.

En principe, les serveurs RPC standards sont lancés par <tt>inetd</tt> 
(manuel inetd(8)), donc <tt>portmap</tt> doit être lancé avant 
qu'<tt>inetd</tt> ne le soit.

Pour les RPC sécurisés, le portmapper a besoin des services 
d'horloge. Assurez-vous qu'ils sont activés dans le fichier 
<tt>/etc/inetd.conf</tt> sur toutes les machines :
<tscreen><verb>
#
# Time service is used for clock syncronization.
#
time    stream  tcp     nowait  root    internal
time    dgram   udp     wait    root    internal
</verb></tscreen>

IMPORTANT : n'oubliez pas de relancer inetd après toute modification de ce fichier !

<sect>De quoi avez-vous besoin pour configurer NIS ?<p>

<sect1>Déterminez si vous êtes un serveur, un esclave ou un client

<p>
Pour répondre à cette question, nous pouvons considérer deux cas :
<enum>
<item>votre machine va être insérée dans un réseau avec des serveurs NIS déjà
existants&nbsp;;
<item>vous n'avez pas encore de serveur NIS dans votre réseau.
</enum>

Dans le premier cas, vous n'aurez besoin que des programmes clients
(<tt>ypbind, ypwhich, ypcat, yppoll, ypmatch</tt>). Le programme le plus
important est <tt>ypbind</tt>. 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 (<tt>/etc/rc.local, /etc/init.d/nis, /etc/rc.d/init.d/ypbind</tt>). 
Dès que <tt>ypbind</tt> 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 <tt>ypserv</tt>).
La section 10 (<em> 10 Configurer un serveur NIS </em>) décrit comment configurer un serveur 
NIS sur votre machine Linux en utilisant la version <tt>ypserv</tt> 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é <tt>yps</tt>,
é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.

<sect1>Les programmes

<p>
La bibliothèque <tt>/usr/lib/libc.a</tt> (version 4.4.2 et 
supérieure) ou la bibliothèque dynamique partagée <tt>/lib/libc.so.x</tt> 
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 <tt>/lib/libnsl.so.1</tt>.

Certaines personnes ont signalé que NIS ne fonctionne qu'avec 
<tt>/usr/lib/libc.a</tt> 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 :

<tscreen><verb>
  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
</verb></tscreen>

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

<sect1>Le démon ypbind<p>

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

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

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

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 <tt>/etc/rc.d/</tt>. Pour tester <tt>ypbind</tt> faites ceci :
<itemize>
<item>Vérifiez que votre nom de domaine est défini. Si ce n'est pas le cas, 
faites 	

        <tscreen><verb>
	    /bin/domainname-yp nis.domain
	</verb></tscreen>

	où <tt>nis.domain</tt> 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.

<item>Lancez <tt>/usr/sbin/rpc.portmap</tt> s'il ne tourne pas déjà.

<item>Créez le répertoire <tt>/var/yp</tt> s'il n'existe pas.

<item>Lancez <tt>/usr/sbin/ypbind</tt>

<item>Utilisez la commande <tt>rpcinfo -p localhost</tt> pour 
    vérifier qu'<tt>ypbind</tt> est capable d'enregistrer ses services
    dans portmapper. La commande <tt>rpcinfo</tt> devrait produire 
    un message de ce style : 
      <tscreen><verb>
       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
      </verb></tscreen>

<item>Vous pouvez également lancer <tt>rpcinfo -u localhost ypbind</tt>. 
    Cette commande devrait alors produire :

      <tscreen><verb>
        program 100007 version 2 ready and waiting
      </verb></tscreen>
</itemize>

Vous devriez alors être capable d'utiliser les programmes clients tels 
que <tt>ypcat</tt>, etc. Par exemple, <tt>ypcat passwd</tt> 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 :

<tscreen><verb>
    /var/yp
</verb></tscreen>

Ce répertoire DOIT exister pour qu'<tt>ypbind</tt> soit correctement lancé.

Pour vérifier que le nom de domaine est correctement configurer, utilisez le
programme <tt>/bin/ypdomainname</tt>, fourni avec yp-tools 2.0. Il utilise la
fonction <em>yp_get_default_domain</em>, 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
<tt>/etc/rc.d</tt> sur votre système pour qu'<tt>ypbind</tt> 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é.

<sect1>Configurer un client NIS en utilisant le NIS traditionnel<p>

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

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

<tscreen><verb>
+::::::
</verb></tscreen>

Vous pouvez également utiliser les caractères + et - pour
inclure/exclure ou modifier certains utilisateurs. Si vous souhaitez
exclure l'utilisateur guest, ajoutez <tt>-guest</tt>
à votre fichier <tt>/etc/passwd</tt>. Si vous souhaitez utiliser
un interpréteur de commandes différent (par exemple ksh)
pour l'utilisateur "linux", ajoutez la ligne <tt>+linux::::::/bin/ksh</tt>.
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 :

<tscreen><verb>
      +miquels:::::::
      +ed:::::::
      +dth:::::::
      +@sysadmins:::::::
      -ftp
      +:*::::::/etc/NoShell
</verb></tscreen>

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 :
<tscreen><verb>
sysadmins (-,software,) (-,kukuk,)
</verb></tscreen>

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.

<sect1>Configurer un client NIS en utilisant NYS<p>

Il vous suffit d'avoir le fichier de configuration NIS 
(<tt>/etc/yp.conf</tt>) qui pointe sur le (ou les) serveur(s) adéquat(s), ainsi qu'un fichier 
<tt>/etc/nsswitch.conf</tt> 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 ?").

<sect1>Configurer un client NIS en utilisant la glibc 2.x<p>

La glibc utilise la version "NIS traditionnelle", donc vous
devrez lancer ypbind. Le fichier <tt>/etc/nsswitch.conf</tt> 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.

<sect1>Le fichier nsswitch.conf<p>

Le fichier de configuration <tt>/etc/nsswitch.conf</tt> 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 <tt>/etc/host.conf</tt> détermine la façon dont les recherches de
noms de machines se font. Par exemple, la ligne 

<tscreen><verb>
    hosts: files nis dns
</verb></tscreen>

indique que la recherche d'un nom de machine sera d'abord effectuée
dans le fichier local <tt>/etc/hosts</tt>, puis dans la table NIS et enfin 
en utilisant le DNS (<tt>/etc/resolv.conf</tt> et <tt>named</tt>). 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:
<tscreen><verb>
#
# /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
</verb></tscreen>

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 <tt>/etc/nsswitch.conf</tt>, la glibc utilisera l'entrée passwd pour effectuer
ses recherches.	Il existe certaines entrées supplémentaires
avec la glibc comme <tt>hesoid</tt>. Pour plus d'informations, consultez la 
documentation de la glibc.

<sect> Mots de passe Shadow avec NIS et PAM
<p>
L'utilisation des mots de passe Shadow avec NIS est toujours une mauvaise idée.
Vous perdez toute la sécurité apportée par le système Shadow. Une bonne
façon d'éviter les mots de passe Shadow avec NIS est de ne mettre dans le fichier
<tt>/etc/shadow</tt> que les utilisateurs du système local. Enlevez de la base de
données Shadow toutes les entrées correspondant aux utilisateurs NIS, et remettez
les mots de passe dans <tt>/etc/passwd</tt>. Vous pourrez ainsi utiliser le système
Shadow pour le super-utilisateur (i.e. "root"), et les mots de passe classiques pour
les utilisateurs NIS. Cette solution a l'avantage de pouvoir fonctionner avec tous
les clients NIS.

Si cette option n'est pas possible pour vous, il faudra utiliser la bibliothèque
GNU C 2.x. C'est la seule bibliothèque libc pour Linux qui gère l'utilisation
des mots de passe Shadow avec NIS. Sous Linux, la libc5 ne le permet pas. La libc5
compilée avec le support de NYS contient une partie de code permettant le mélange
Shadow - NIS, mais ce code présente de sérieuses erreurs dans certains cas et
ne fonctionne pas correctement avec toutes les entrées Shadow.

Le problème suivant est PAM. La bibliothèque GNU C gère l'utilisation des
mots de passe Shadow avec NIS, mais PAM ne le fait pas, essentiellement <tt> pam_pwdb/libpwdb</tt>.
C'est un gros problème pour les utilisateurs de RedHat 5.x. Si vous avez glibc et PAM,
vous devez changer les entrées dans <tt>/etc/pam.d/*</tt>. Changez toutes les entrées
de pam_pwdb par l'intermédiaire des modules pam_auth_unix_*. Cette méthode devrait
fonctionner.

<sect> Que faut-il pour configurer NIS+ ?<p>

<sect1>Les programmes<p>

Le code de NIS+ pour Linux a été développé pour la bibliothèque GNU C 2.
Il existe également une version pour la libc5 de Linux, puisque toutes les applications
commerciales sont compilées en édition de lien avec cette bibliothèque, et que 
vous ne pouvez pas les recompiler en utilisant la glibc. Il y a des problèmes avec
la libc5 et NIS+: Vous ne pourrez pas réaliser d'édition de lien statique de vos
programmes, et les programmes compilés avec cette bibliothèque ne fonctionneront
pas avec les autres versions de la libc5.

Vous devez récupérer et recompiler la dernière version de la glibc2,
et une distribution basée sur cette bibliothèque comme la
Redhat Mustang ou l'instable Debian. Mais attention : il 
s'agit toujours d'une version bêta. Lisez la documentation
concernant la glibc et celle fournie par la distribution.
La glibc2.0.x ne gère pas pleinement NIS+, et ne l'intégrera
jamais. La première version avec la gestion NIS+ sera la 2.1.

Les programmes clients NIS+ peuvent être récupérés sur les sites :
<tscreen><verb>
  Site                   Repertoire                 Nom du fichier

  ftp.kernel.org         /pub/software/libs/glibc   libc-*, glibc-crypt-*,
                                                    glibc-linuxthreads-*
  ftp.kernel.org         /pub/linux/utils/net/NIS+  nis-tools-1.4.2.tar.gz
  ftp.kernel.org         /pub/linux/utils/net/NIS+  pam_keylogin-1.2.tar.gz
</verb></tscreen>

Les distributions basées sur la glibc peuvent être récupérées sur les sites :
<tscreen><verb>
  Site                   Repertoire

  ftp.redhat.com         /pub/redhat/redhat-5.1
  ftp.debian.org         /pub/debian/dists/hamm
</verb></tscreen>

Pour compiler la glibc, suivez les instructions livrées avec les sources.
Vous pouvez trouver à l'adresse suivante la version patchée de la libc5,
basée sur NYS et sur les sources de la glibc, qui peut être utilisée pour 
remplacer la libc5. 

<tscreen><verb>
  Site                   Repertoire                 Nom du fichier

  ftp.kernel.org         /pub/linux/utils/net/NIS+  libc-5.4.44-nsl-0.4.10.tar.gz
</verb></tscreen>

Vous pouvez également consulter le site
  <url url="http://www-vt.uni-paderborn.de/~kukuk/linux/nisplus.html"
      name="http://www-vt.uni-paderborn.de/~kukuk/linux/nisplus.html">
pour plus d'informations ainsi que pour avoir les dernières sources.

<sect1>Configurer un client NIS+<p>

IMPORTANT : pour configurer un client NIS+, lisez la documentation
NIS+ Solaris pour voir ce qu'il convient de faire du côté serveur.
Ce document ne décrit que le côté client !

Après avoir installé la nouvelle libc ainsi que nis-tools, créez les références
pour le nouveau client sur le serveur NIS+. Assurez vous que <tt>portmap</tt> est lancé.
Ensuite, vérifiez que votre PC Linux est à la même heure que le serveur NIS+. Pour
réaliser des RPC sécurisés, vous disposez d'une courte période de 3 minutes,
durant lesquelles les références sont valides. Lancer <tt>xntpd</tt> sur toutes
les machines peut être une bonne idée. Après tout ça, exécutez les commandes 
suivantes :

<tscreen><verb>
domainname nisplus.domain.
nisinit -c -H <serveur NIS+>
</verb></tscreen>

pour initialiser le système de lancement. Lisez la page de manuel de
nisinit pour connaître les différentes options existantes.
Assurez-vous que le nom de domaine est toujours bien positionné lors
d'un réamorçage. Si vous ne connaissez pas votre nom de domaine NIS+
sur votre réseau, demandez-le à votre administrateur système.

Pensez également à modifier votre ficher <tt>/etc/nsswitch.conf</tt>.
Assurez-vous que le seul service situé avec publickey est <tt>nisplus</tt>
("publickey: nisplus"), et rien d'autre !

Ensuite, lancez <tt>keyserv</tt> et assurez-vous qu'il sera toujours lancé
lors de l'amorçage de la machine. Lancez 
<tscreen><verb>
keylogin -r
</verb></tscreen>
pour conserver la clef privée sur votre système (j'espère
que vous avez ajouté la clef publique de la nouvelle machine 
sur le serveur NIS+ !).

"niscat passwd.org_dir" doit désormais vous donner toutes les entrées
contenues dans la base de données passwd.

<sect1>NIS+, keylogin, login et PAM

<p>
Lorsque l'utilisateur se connecte, il a besoin de fixer sa clef secrète
sur le serveur de clef. Cela est effectué en appelant <tt>keylogin</tt>. 
Le login à partir du paquetage shadow fera cela à la place de 
l'utilisateur. Pour un login de type PAM, vous devez installer 
 <tt>pam_keylogin-1.1.tar.gz</tt> et modifier le fichier 
<tt>/etc/pam.d/login</tt> pour utiliser <tt>pam_unix_auth</tt>, et non <tt>pwdb</tt> qui 
ne gère pas NIS+. Voici un exemple :

<tscreen><verb>
#%PAM-1.0
auth       required	/lib/security/pam_securetty.so
auth	   required	/lib/security/pam_keylogin.so
auth       required	/lib/security/pam_unix_auth.so
auth       required	/lib/security/pam_nologin.so
account    required	/lib/security/pam_unix_acct.so
password   required	/lib/security/pam_unix_passwd.so
session    required	/lib/security/pam_unix_session.so
</verb></tscreen>

<sect1>Le fichier nsswitch.conf

<p>

Le fichier de configuration <tt>/etc/nsswitch.conf</tt> 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 <tt>/etc/host.conf</tt> détermine la façon dont les recherches de
noms de machines se font. Par exemple, la ligne 

<tscreen><verb>
    hosts: files nisplus dns
</verb></tscreen>

indique que la fonction de recherche doit dans un premier temps
chercher dans le fichier local <tt>/etc/hosts</tt>, suivi par une recherche
NIS+ et enfin <em>via</em> le service de recherche de noms
(<tt>/etc/resolv.conf</tt> et <tt>named</tt>).  À ce moment là, si aucune machine n'est
trouvée, alors une erreur est renvoyée.

Voici un exemple de bon fichier <tt>/etc/nsswitch.conf</tt>
<tscreen><verb>
# Un exemple de configuration de NSS. 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 a rien trouve
#
passwd:     compat
# pour libc5: passwd: files nisplus
group:      compat
# pour libc5: group: files nisplus
shadow:     compat
# pour libc5: shadow: files nisplus

passwd_compat: nisplus
group_compat:  nisplus
shadow_compat: nisplus

hosts:      nisplus files dns

services:   nisplus [NOTFOUND=return] files
networks:   nisplus [NOTFOUND=return] files
protocols:  nisplus [NOTFOUND=return] files
rpc:        nisplus [NOTFOUND=return] files
ethers:     nisplus [NOTFOUND=return] files
netmasks:   nisplus [NOTFOUND=return] files
netgroup:   nisplus
bootparams: nisplus [NOTFOUND=return] files
publickey:  nisplus
automount:  files
aliases:    nisplus [NOTFOUND=return] files
</verb></tscreen>

<sect>Configurer un serveur NIS<p>

<sect1>Le programme serveur ypserv<p>

Ce document ne décrit que la manière de configurer le serveur NIS "ypserv".

Les programmes serveur NIS peuvent être trouvés sur :

<tscreen><verb>
  Site                   Repertoire                    Nom de fichier

  ftp.kernel.org         /pub/linux/utils/net/NIS      ypserv-1.3.2.tar.gz
  wauug.erols.com        /pub/net/nis                  ypserv-1.3.2.tar.gz
</verb></tscreen>

Vous pouvez également regarder le document
  <url url="http://www-vt.uni-paderborn.de/~kukuk/linux/nis.html"
      name="http://www-vt.uni-paderborn.de/~kukuk/linux/nis.html">
pour obtenir de plus amples informations ainsi que les sources.

La configuration du serveur est la même que cela soit le NIS 
traditionnel ou NYS.

Compilez les sources pour générer les programmes "ypserv" et "makedbm".
Si votre serveur est considéré comme maître, déterminez quels fichiers
vous souhaitez rendre disponibles via NIS et ajoutez ou supprimez
les entrées appropriées dans <tt>/var/yp/Makefile</tt>.

Il y a une seule grande différence entre <tt>ypserv 1.1</tt> et <tt>ypserv 1.2</tt>. Depuis
la version 1.2, <tt>ypserv</tt> utilise une mémoire cache pour les manipulations de fichiers.
Cela signifie que vous devez toujours appeler <tt>makedbm</tt> avec l'option <tt>-c</tt> si
créez de nouvelles maps. Assurez-vous que vous utilisez le nouveau <tt>/var/yp/Makefile</tt>
fourni avec <tt>ypserv 1.2</tt> ou une version supérieure, ou ajoutez l'option <tt>-c</tt>
à <tt>makedbm</tt> dans le Makefile. Si vous ne le faites pas, <tt>ypserv</tt> continuera
à utiliser les anciennes maps, et non les nouvelles.

Éditez ensuite <tt>/var/yp/securenets</tt> et <tt>/etc/ypserv.conf</tt>. Pour plus
d'information, lisez les pages de manuel <tt>ypserv(8)</tt> et <tt>ypserv.conf(5)</tt>.

Assurez-vous que le portmapper (<tt>portmap(8)</tt>) fonctionne
et lancez le serveur <tt>ypserv</tt>. La commande 

<tscreen><verb>
    % rpcinfo -u localhost ypserv
</verb></tscreen>

doit vous répondre un message du genre 

<tscreen><verb>
    program 100004 version 2 ready and waiting
</verb></tscreen>

Maintenant, générez la base de donnée NIS (YP). 
Sur le serveur maître, lancez :

<tscreen><verb>
    % /usr/lib/yp/ypinit -m
</verb></tscreen>

sur un esclave, assurez-vous que ypwhich -m fonctionne. C'est à dire que votre esclave
doit être configuré en tant que client NIS, puis lancez:
<tscreen><verb>
    % /usr/lib/yp/ypinit -s masterhost
</verb></tscreen>
pour que la machine soit un esclave NIS.

Ça y est, votre serveur fonctionne.

Si vous avez de plus gros problèmes, vous pouvez lancer <tt>ypserv</tt> et <tt>ypbind</tt>
en mode debug sur des xterms différents. La sortie écran du mode débug devrait vous
montrer ce qui ne va pas.

Il est possible que vous souhaitiez ajouter les lignes suivantes
sur le serveur esclave dans la <tt>crontab</tt> root :

<tscreen><verb>
      20 *    * * *    /usr/lib/yp/ypxfr_1perhour
      40 6    * * *    /usr/lib/yp/ypxfr_1perday
      55 6,18 * * *    /usr/lib/yp/ypxfr_2perday
</verb></tscreen>

De cette manière, vous êtes sûr que les maps NIS sont synchronisées
et sont à jour, même s'il peut arriver qu'une mise à jour soit 
ratée parce que l'esclave était arrêté lors de la mise à jour du
maître.

Vous pouvez ajouter un esclave n'importe quand, ensuite. Tout d'abord, assurez-vous que le
nouveau <tt>ypserv</tt> a les droits pour contacter le serveur maître. Ensuite, lancez
<tscreen><verb>
    % /usr/lib/yp/ypinit -s masterhost
</verb></tscreen>
sur l'esclave, et ajoutez le nom du serveur au fichier <tt>/var/yp/ypservers</tt>. Après
cela, lancez la commande "make" dans le répertoire <tt>/var/yp</tt> pour mettre les maps
à jour.

Si vous souhaitez restreindre l'accès au serveur NIS, vous devez
configurer le serveur NIS comme s'il était également un client 
en lançant <tt>ypbind</tt> et en ajoutant les entrées "+" dans le 
fichier <tt>/etc/passwd</tt>. La bibliothèque de fonctions
va alors ignorer les entrées normales après la première
entrée NIS et va récupérer le reste des informations en utilisant NIS.
C'est de cette manière que sont maintenues les règles d'accès NIS.
Par exemple :

<tscreen><verb>
     root:x:0:0:root:/root:/bin/bash
     daemon:*:1:1:daemon:/usr/sbin:
     bin:*:2:2:bin:/bin:
     sys:*:3:3:sys:/dev:
     sync:*:4:100:sync:/bin:/bin/sync
     games:*:5:100:games:/usr/games:
     man:*:6:100:man:/var/catman:
     lp:*:7:7:lp:/var/spool/lpd:
     mail:*:8:8:mail:/var/spool/mail:
     news:*:9:9:news:/var/spool/news:
     uucp:*:10:50:uucp:/var/spool/uucp:
     nobody:*:65534:65534:noone at all,,,,:/dev/null:
     +miquels::::::
     +:*:::::/etc/NoShell
     [ Tous les utilisateurs normaux APRES cette ligne !]
     tester:*:299:10:Just a test account:/tmp:
     miquels:1234567890123:101:10:Miquel van Smoorenburg:/home/miquels:/bin/zsh
</verb></tscreen>

L'utilisateur <em>tester</em> existera toujours mais il aura l'interpréteur de
commandes <tt>/etc/NoShell</tt>. L'utilisateur <em>miquels</em> aura un accès normal.

Sinon, vous pouvez également éditer le fichier <tt>/var/yp/Makefile</tt> 
et configurer NIS pour qu'il utilise un autre fichier passwd.
Sur de gros systèmes, les fichiers passwd et group sont généralement
conservés dans le répertoire <tt>/var/yp/ypfiles/</tt>. Si vous 
utilisez les outils standards pour administrer le fichier mot 
de passe ("passwd", "chfn",
"adduser"), cela ne fonctionnera plus et devrez alors créer vos propres outils.

Toutefois, <tt>yppasswd</tt>, <tt>ypchsh</tt> et <tt>ypchfn</tt> fonctionneront bien sur.

<sect1>Le programme serveur yps<p>
<p>
Pour mettre en place le serveur NIS <tt>yps</tt>, consultez les paragraphes
précédents. Sa configuration est assez similaire sans être exactement
la même, donc faites attention si vous essayez d'appliquer les
instructions de <tt>ypserv</tt> à <tt>yps</tt>! Cependant, <tt>yps</tt> n'est plus maintenu 
par son auteur, et contient un certain nombre de failles de sécurité. Vous
devriez éviter de vous en servir.

Ce serveur NIS peut être trouvé sur :

<tscreen><verb>
    Site                Repertoire               Nom du Fichier

  ftp.lysator.liu.se  /pub/NYS/servers            yps-0.21.tar.gz
</verb></tscreen>

<sect1>Le programme rpc.yppasswdd
 
<p>
   À chaque fois qu'un utilisateur change son mot de passe, le mot de 
passe de la  base de données NIS, ainsi que celui des autres bases
de données NIS, doit être mis à jour. Le programme
<tt>rpc.yppasswd</tt> est un serveur qui gére les modifications
de mot de passe et qui s'assure que les informations NIS seront 
correctement mises à jour. <tt>rpc.yppasswdd</tt> est désormais intégré
dans <tt>ypserv</tt>. Vous n'avez plus besoin des vieilles versions séparées
<tt>yppasswd-0.9.tar.gz</tt> ou <tt>yppasswd-0.10.tar.gz</tt>, et vous ne devriez
plus les utiliser. La version de <tt>rpc.yppasswdd</tt> qui est comprise dans 
<tt>ypserv 1.3.2</tt> gère totalement les Shadow. <tt>yppasswd</tt> fait
maintenant parti de yp-tools-1.2.tar.gz.

Le lancement de <tt>rpc.yppasswdd</tt> n'est nécessaire que sur le serveur maître.
Par défaut, les utilisateurs ne sont pas autorisés à changer leur Nom complet
(NDT: Prénom + Nom), ni leur shell. Vous pouvez cependant les y autoriser en utilisant
l'option <tt>-e</tt> de <tt>chfn</tt> ou l'option <tt>-e</tt> de <tt>-e</tt> de <tt>chsh</tt>.

<sect>Vérifier l'installation de NIS ou de NYS 

<p>
Si tout fonctionne correctement (comme cela devrait être), vous devriez être
capable de vérifier votre installation avec quelques commandes simples. Supposons que 
le fichier de mots de passe soit géré par NIS, la commande 

<tscreen><verb>
    % ypcat passwd
</verb></tscreen>

devrait alors vous donner le contenu du fichier des mots de passe.
La commande 

<tscreen><verb>
    % ypmatch id_utilisateur passwd
</verb></tscreen>

(où <em>id_utilisateur</em> est le nom de login d'un utilisateur) devrait
vous donner l'entrée de l'utilisateur dans le fichier des mots de passe NIS.
Les commandes <tt>ypcat</tt> et <tt>ypmatch</tt> doivent être incluses 
dans la distribution du NIS (ou NYS) traditionnel.

Si un utilisateur ne peut pas se connecter, lancez le programme suivant
sur la machine cliente :

<tscreen><verb>
#include <stdio.h>
#include <pwd.h>
#include <sys/types.h>

int
main(int argc, char *argv[])
{
  struct passwd *pwd;

  if(argc != 2)
    {
      fprintf(stderr,"Usage: getwpnam username\n");
      exit(1);
    }

  pwd=getpwnam(argv[1]);

  if(pwd != NULL)
    {
      printf("name.....: [%s]\n",pwd->pw_name);
      printf("password.: [%s]\n",pwd->pw_passwd);
      printf("user id..: [%d]\n", pwd->pw_uid);
      printf("group id.: [%d]\n",pwd->pw_gid);
      printf("gecos....: [%s]\n",pwd->pw_gecos);
      printf("directory: [%s]\n",pwd->pw_dir);
      printf("shell....: [%s]\n",pwd->pw_shell);
    }
  else
    fprintf(stderr,"User \"%s\" not found!\n",argv[1]);

  exit(0);
}
</verb></tscreen>

Faites tourner ce programme avec le nom de l'utilisateur en
paramètre. Il va afficher toutes les informations renvoyées
par la fonction <tt>getpwnam</tt> concernant l'utilisateur.
Cela peut vous permettre de savoir si l'entrée est correcte. Un problème
assez fréquemment rencontré est une redéfinition du champ de mot
de passe par un "*".

<sect>Problèmes et erreurs de fonctionnement de NIS

<p>
Voici certains problèmes rencontrés par différents utilisateurs :

<enum>
<item>Les bibliothèques 4.5.19 sont défectueuses. NIS ne fonctionnera pas
avec.

<item>Si vous faites une mise à jour de 4.5.19 à 4.5.24 alors la commande
        <tt>su</tt> plante. Vous devez récupérer la commande 
        <tt>su</tt> à partir de la distribution de la <em>slackware</em>
         1.2.0 ou supérieure. Éventuellement, vous pouvez également y 
        récupérer les bibliothèques mises à jour.

<item> Vous pouvez avoir quelques problèmes avec NIS et DNS sur la même 
        machine si vous utilisez une vieille distribution en <em>a.out</em>. 
        Le serveur DNS ne supporte pas toujours NIS.

<item> Lorsqu'un serveur NIS tombe et est relancé, <tt>ypbind</tt>
    démarre avec des messages du genre :
	<verb>
         yp_match: clnt_call:
                     RPC: Unable to receive; errno = Connection refused
	</verb>
        et les logins sont refusés pour les utilisateurs référencés dans
        la base de donnée NIS. Loguez vous en tant que root si vous le 
        pouvez, tuez <tt>ypbind</tt> puis relancez-le.

<item>Après avoir mis à jour la <tt>libc</tt> version supérieure à 5.4.20,
        les outils YP ne fonctionneront plus. Vous devez utiliser les <tt>yp-tools 
        version 1.2</tt> ou supérieure pour la <tt>libc &gt;= 5.4.21</tt> et <tt>glibc 2.x</tt>, 
        et la version <tt>yp-clients 2.2</tt> pour les versions précédentes.
        <tt>yp-tools 2.0</tt> devrait fonctionner avec toutes les bibliothèques.

<item>Dans les <tt>libc 5.4.21 - 5.4.35</tt>, <tt>yp_maplist</tt> est défectueux. 
        Vous devrez prendre une version 5.4.36 ou supérieure, sinon, certains programmes 
        pour YP comme <tt>ypwhich</tt> généreront une erreur <em>seg.fault</em>.

<item>La <tt>libc5</tt> avec le NIS traditionnel ne gère pas l'utilisation des mots de passe
        Shadow avec NIS. Vous devez donc utiliser la <tt>libc5</tt> avec NYS ou la <tt>glibc 2.x</tt>.

<item><tt>ypcat shadow</tt> ne montre pas la map Shadow. C'est là quelque chose de correct,
        puisque le nom de la map Shadow est "shadow.byname", et non "shadow".

</enum>

<sect>FAQ : Les questions les plus fréquemment posées

<p>
Bon nombre de questions doivent être résolues désormais. Si vous avez
des questions sans réponse, vous pouvez poster un message dans les
forums de discussion :
<tscreen><verb>
    comp.os.linux.help
</verb></tscreen>

ou

<tscreen><verb>
    comp.os.linux.networking
</verb></tscreen>

ou contacter l'un des auteurs de ce HOWTO.
</article>
