Le Linux NIS(YP)/NYS/NIS+ HOWTO
Thorsten Kukuk
Version 0.12, 12 Juin 1998
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.
______________________________________________________________________
Table des matières
1. Version française
2. Introduction
2.1 Nouvelles versions de ce document
2.2 Avertissement
2.3 Retour d'information et corrections
2.4 Remerciements
3. Glossaire et informations générales
3.1 Glossaire des termes employés
3.2 Quelques informations générales
4. NIS ou NIS+ ?
4.1 libc 4/5 avec "NIS traditionnel" ou NYS ?
5. Comment ça marche ?
5.1 Comment fonctionne NIS(YP) ?
5.2 Comment fonctionne NIS+ ?
6. Le RPC Portmapper
7. De quoi avez-vous besoin pour configurer NIS ?
7.1 Déterminez si vous êtes un serveur, un esclave ou un client
7.2 Les programmes
7.3 Le démon ypbind
7.4 Configurer un client NIS en utilisant le NIS traditionnel
7.5 Configurer un client NIS en utilisant NYS
7.6 Configurer un client NIS en utilisant la glibc 2.x
7.7 Le fichier nsswitch.conf
8. Mots de passe Shadow avec NIS et PAM
9. Que faut-il pour configurer NIS+ ?
9.1 Les programmes
9.2 Configurer un client NIS+
9.3 NIS+, keylogin, login et PAM
9.4 Le fichier nsswitch.conf
10. Configurer un serveur NIS
10.1 Le programme serveur ypserv
10.2 Le programme serveur yps
10.3 Le programme rpc.yppasswdd
11. Vérifier l'installation de NIS ou de NYS
12. Problèmes et erreurs de fonctionnement de NIS
13. FAQ : Les questions les plus fréquemment posées
______________________________________________________________________
11.. VVeerrssiioonn ffrraannççaaiissee
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 :
· http://www.freenix.fr/linux/HOWTO
· ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO
ainsi que leurs nombreux miroirs.
Pour plus de renseignements concernant la traduction en langue
française des documents du LDP (_L_i_n_u_x _D_o_c_u_m_e_n_t_a_t_i_o_n _P_r_o_j_e_c_t),
consultez le document "Liste-des-HOWTO" 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 !
22.. IInnttrroodduuccttiioonn
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 _N_e_t_w_o_r_k
_I_n_f_o_r_m_a_t_i_o_n _S_e_r_v_i_c_e. 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 ``le Portmapper
RPC''.
Le NIS-Howto est rédigé et maintenu par:
Thorsten Kukuk, kukuk@vt.uni-paderborn.de
La version initiale de ce document a été réalisée par:
Andrea Dell'Amico
Mitchum DSouza
Erwin Embsen
Peter Eriksson
que nous tenons à remercier.
22..11.. NNoouuvveelllleess vveerrssiioonnss ddee ccee ddooccuummeenntt
Vous pourrez toujours trouver la dernière version de ce document sur
le web via l'URL 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 http://www-vt.uni-paderborn.de/~kukuk/linux/nis-howto.html
.
22..22.. AAvveerrttiisssseemmeenntt
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.
22..33.. RReettoouurr dd''iinnffoorrmmaattiioonn eett ccoorrrreeccttiioonnss
Si vous avez des questions ou des commentaires à propos de ce
document, n'hésitez pas à envoyer un courrier électronique à
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.
22..44.. RReemmeerrcciieemmeennttss
Nous voudrions remercier toutes les personnes qui ont contribué
(directement ou indirectement) à ce document. Par ordre alphabétique :
Byron A Jeff
Miquel van Smoorenburg
Theo de Raadt est à l'origine du code yp-clients.
Swen Thuemmler 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.
33.. GGlloossssaaiirree eett iinnffoorrmmaattiioonnss ggéénnéérraalleess
33..11.. GGlloossssaaiirree ddeess tteerrmmeess eemmppllooyyééss
Dans ce document, bon nombre d'acronymes sont employés. Voici la liste
des plus utilisés, avec une brève explication.
DDBBMM
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.
DDLLLL
Dynamically Linked Library (Bibliothèque liée dynamiquement):
bibliothèque de fonctions chargées dynamiquement à l'exécution.
ddoommaaiinnnnaammee
Nom du domaine : nom "clef" 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
"domaine" DNS (nom de la machine) des machines.
FFTTPP
File Transfer Protocol (Protocole de transfert de fichiers) :
protocole utilisé pour transférer des fichiers entre deux
ordinateurs.
lliibbnnssll
Name services library : bibliothèque d'appels systèmes (tels
que getpwnam, getservbyname, ...) sur les systèmes Unix SVR4.
La GNU libc utilise cette bibliothèque pour les fonctions NIS
(YP) et NIS+.
lliibbssoocckkeett
Bibliothèque de fonctions de manipulation de sockets socket,
bind, listen, ... sur les systèmes SVR4.
NNIISS
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 "NIS traditionnel".
NNIISS++
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.
NNYYSS
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 (). Il contient entre autres
choses une réimplémentation complète du code de NIS
(c'est-à-dire YP) qui utilise les fonctionnalités _N_a_m_e _S_e_r_v_i_c_e_s
_S_w_i_t_c_h de la bibliothèque NYS.
NNSSSS
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.
RRPPCC
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.
YYPP Yellow Pages(tm) : marque déposée par British Telecom. (les
pages jaunes... comme les nôtres !).
TTCCPP--IIPP
Transmission Control Protocol/Internet Protocol : protocole de
communication le plus fréquemment utilisé sur les machines Unix.
33..22.. QQuueellqquueess iinnffoorrmmaattiioonnss ggéénnéérraalleess
Les quatre lignes ci-dessous sont une citation du manuel
d'administration réseau de Sun(TM) System.
"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."
NIS est l'abréviation pour _N_e_t_w_o_r_k _I_n_f_o_r_m_a_t_i_o_n _S_e_r_v_i_c_e (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:
· noms de login, mots de passe, répertoires d'ouverture (/etc/passwd)
· renseignements sur les groupes d'utilisateurs (/etc/group)
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.
44.. NNIISS oouu NNIISS++ ??
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.
44..11.. lliibbcc 44//55 aavveecc ""NNIISS ttrraaddiittiioonnnneell"" oouu NNYYSS ??
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 (_N_e_t_g_r_o_u_p_s), 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 (_N_a_m_e _S_w_i_t_c_h _S_e_r_v_i_c_e), 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.
55.. CCoommmmeenntt ççaa mmaarrcchhee ??
55..11.. CCoommmmeenntt ffoonnccttiioonnnnee NNIISS((YYPP)) ??
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 "domaines" NIS, ou bien vous pouvez avoir
des serveurs NIS coopératifs. Dans ce cas, l'un d'entre eux est dit
serveur NIS _m_a_î_t_r_e, 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 /etc/passwd et /etc/group
peuvent être directement convertis dans le format DBM en utilisant un
programme de conversion _A_S_C_I_I_-_t_o_-_D_B_M (makedbm 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 yppush), 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 ypbind (située dans l'archive ypbind-3.3.tar.gz) permet
d'indiquer le serveur NIS à contacter dans un fichier de
configuration, ce qui évite d'effectuer un _b_r_o_a_d_c_a_s_t (ce qui n'est pas
sécurisé car n'importe qui peut installer un serveur NIS et peut donc
répondre aux requêtes...).
55..22.. CCoommmmeenntt ffoonnccttiioonnnnee NNIISS++ ??
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
_v_i_a 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+.
66.. LLee RRPPCC PPoorrttmmaappppeerr
Pour lancer n'importe lequel des programmes mentionnés ci-dessous,
vous aurez besoin de lancer le programme /usr/sbin/rpc.portmap.
Certaines distributions de LLiinnuuxx ont déjà dans le code du script
/etc/rc.d/rc.inet2 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
portmap 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 portmap 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 inetd (manuel
inetd(8)), donc portmap doit être lancé avant qu'inetd 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 /etc/inetd.conf sur
toutes les machines :
#
# Time service is used for clock syncronization.
#
time stream tcp nowait root internal
time dgram udp wait root internal
IMPORTANT : n'oubliez pas de relancer inetd après toute modification
de ce fichier !
77.. DDee qquuooii aavveezz--vvoouuss bbeessooiinn ppoouurr ccoonnffiigguurreerr NNIISS ??
77..11.. DDéétteerrmmiinneezz ssii vvoouuss êêtteess uunn sseerrvveeuurr,, uunn eessccllaavvee oouu uunn cclliieenntt
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 ( _1_0 _C_o_n_f_i_g_u_r_e_r _u_n _s_e_r_v_e_u_r _N_I_S ) 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.
77..22.. LLeess pprrooggrraammmmeess
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.
77..33.. LLee ddéémmoonn yyppbbiinndd
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
où 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 diffi
cile 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 _y_p___g_e_t___d_e_f_a_u_l_t___d_o_m_a_i_n, 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é.
77..44.. CCoonnffiigguurreerr uunn cclliieenntt NNIISS eenn uuttiilliissaanntt llee NNIISS ttrraaddiittiioonnnneell
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.
77..55.. CCoonnffiigguurreerr uunn cclliieenntt NNIISS eenn uuttiilliissaanntt NNYYSS
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 ?").
77..66.. CCoonnffiigguurreerr uunn cclliieenntt NNIISS eenn uuttiilliissaanntt llaa gglliibbcc 22..xx
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.
77..77.. LLee ffiicchhiieerr nnsssswwiittcchh..ccoonnff
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.
88.. MMoottss ddee ppaassssee SShhaaddooww aavveecc NNIISS eett PPAAMM
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 /etc/shadow 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
/etc/passwd. 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 pam_pwdb/libpwdb. 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 /etc/pam.d/*. Changez toutes les entrées de
pam_pwdb par l'intermédiaire des modules pam_auth_unix_*. Cette
méthode devrait fonctionner.
99.. QQuuee ffaauutt--iill ppoouurr ccoonnffiigguurreerr NNIISS++ ??
99..11.. LLeess pprrooggrraammmmeess
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 :
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
Les distributions basées sur la glibc peuvent être récupérées sur les
sites :
Site Repertoire
ftp.redhat.com /pub/redhat/redhat-5.1
ftp.debian.org /pub/debian/dists/hamm
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.
Site Repertoire Nom du fichier
ftp.kernel.org /pub/linux/utils/net/NIS+ libc-5.4.44-nsl-0.4.10.tar.gz
Vous pouvez également consulter le site http://www-vt.uni-
paderborn.de/~kukuk/linux/nisplus.html pour plus d'informations ainsi
que pour avoir les dernières sources.
99..22.. CCoonnffiigguurreerr uunn cclliieenntt NNIISS++
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 portmap 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 xntpd sur toutes les machines peut
être une bonne idée. Après tout ça, exécutez les commandes suivantes :
domainname nisplus.domain.
nisinit -c -H
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 /etc/nsswitch.conf. Assurez-
vous que le seul service situé avec publickey est nisplus ("publickey:
nisplus"), et rien d'autre !
Ensuite, lancez keyserv et assurez-vous qu'il sera toujours lancé lors
de l'amorçage de la machine. Lancez
keylogin -r
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.
99..33.. NNIISS++,, kkeeyyllooggiinn,, llooggiinn eett PPAAMM
Lorsque l'utilisateur se connecte, il a besoin de fixer sa clef
secrète sur le serveur de clef. Cela est effectué en appelant
keylogin. Le login à partir du paquetage shadow fera cela à la place
de l'utilisateur. Pour un login de type PAM, vous devez installer
pam_keylogin-1.1.tar.gz et modifier le fichier /etc/pam.d/login pour
utiliser pam_unix_auth, et non pwdb qui ne gère pas NIS+. Voici un
exemple :
#%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
99..44.. LLee ffiicchhiieerr nnsssswwiittcchh..ccoonnff
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 nisplus dns
indique que la fonction de recherche doit dans un premier temps
chercher dans le fichier local /etc/hosts, suivi par une recherche
NIS+ et enfin _v_i_a le service de recherche de noms (/etc/resolv.conf et
named). À ce moment là, si aucune machine n'est trouvée, alors une
erreur est renvoyée.
Voici un exemple de bon fichier /etc/nsswitch.conf
# 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
1100.. CCoonnffiigguurreerr uunn sseerrvveeuurr NNIISS
1100..11.. LLee pprrooggrraammmmee sseerrvveeuurr yyppsseerrvv
Ce document ne décrit que la manière de configurer le serveur NIS
"ypserv".
Les programmes serveur NIS peuvent être trouvés sur :
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
Vous pouvez également regarder le document 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 /var/yp/Makefile.
Il y a une seule grande différence entre ypserv 1.1 et ypserv 1.2.
Depuis la version 1.2, ypserv utilise une mémoire cache pour les
manipulations de fichiers. Cela signifie que vous devez toujours
appeler makedbm avec l'option -c si créez de nouvelles maps. Assurez-
vous que vous utilisez le nouveau /var/yp/Makefile fourni avec ypserv
1.2 ou une version supérieure, ou ajoutez l'option -c à makedbm dans
le Makefile. Si vous ne le faites pas, ypserv continuera à utiliser
les anciennes maps, et non les nouvelles.
Éditez ensuite /var/yp/securenets et /etc/ypserv.conf. Pour plus
d'information, lisez les pages de manuel ypserv(8) et ypserv.conf(5).
Assurez-vous que le portmapper (portmap(8)) fonctionne et lancez le
serveur ypserv. La commande
% rpcinfo -u localhost ypserv
doit vous répondre un message du genre
program 100004 version 2 ready and waiting
Maintenant, générez la base de donnée NIS (YP). Sur le serveur
maître, lancez :
% /usr/lib/yp/ypinit -m
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:
% /usr/lib/yp/ypinit -s masterhost
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 ypserv et
ypbind 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 crontab root :
20 * * * * /usr/lib/yp/ypxfr_1perhour
40 6 * * * /usr/lib/yp/ypxfr_1perday
55 6,18 * * * /usr/lib/yp/ypxfr_2perday
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 ypserv a les droits pour contacter le
serveur maître. Ensuite, lancez
% /usr/lib/yp/ypinit -s masterhost
sur l'esclave, et ajoutez le nom du serveur au fichier
/var/yp/ypservers. Après cela, lancez la commande "make" dans le
répertoire /var/yp 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 ypbind et en ajoutant les entrées "+" dans le fichier
/etc/passwd. 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 :
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
L'utilisateur _t_e_s_t_e_r existera toujours mais il aura l'interpréteur de
commandes /etc/NoShell. L'utilisateur _m_i_q_u_e_l_s aura un accès normal.
Sinon, vous pouvez également éditer le fichier /var/yp/Makefile 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 /var/yp/ypfiles/. 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, yppasswd, ypchsh et ypchfn fonctionneront bien sur.
1100..22.. LLee pprrooggrraammmmee sseerrvveeuurr yyppss
Pour mettre en place le serveur NIS yps, 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 ypserv à yps! Cependant, yps 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 :
Site Repertoire Nom du Fichier
ftp.lysator.liu.se /pub/NYS/servers yps-0.21.tar.gz
1100..33.. LLee pprrooggrraammmmee rrppcc..yyppppaasssswwdddd
À 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 rpc.yppasswd est un
serveur qui gére les modifications de mot de passe et qui s'assure que
les informations NIS seront correctement mises à jour. rpc.yppasswdd
est désormais intégré dans ypserv. Vous n'avez plus besoin des
vieilles versions séparées yppasswd-0.9.tar.gz ou
yppasswd-0.10.tar.gz, et vous ne devriez plus les utiliser. La version
de rpc.yppasswdd qui est comprise dans ypserv 1.3.2 gère totalement
les Shadow. yppasswd fait maintenant parti de yp-tools-1.2.tar.gz.
Le lancement de rpc.yppasswdd 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 -e de chfn ou l'option
-e de -e de chsh.
1111.. VVéérriiffiieerr ll''iinnssttaallllaattiioonn ddee NNIISS oouu ddee NNYYSS
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
% ypcat passwd
devrait alors vous donner le contenu du fichier des mots de passe. La
commande
% ypmatch id_utilisateur passwd
(où _i_d___u_t_i_l_i_s_a_t_e_u_r 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 ypcat et ypmatch 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 :
#include
#include
#include
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);
}
Faites tourner ce programme avec le nom de l'utilisateur en paramètre.
Il va afficher toutes les informations renvoyées par la fonction
getpwnam 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 "*".
1122.. PPrroobbllèèmmeess eett eerrrreeuurrss ddee ffoonnccttiioonnnneemmeenntt ddee NNIISS
Voici certains problèmes rencontrés par différents utilisateurs :
1. Les bibliothèques 4.5.19 sont défectueuses. NIS ne fonctionnera pas
avec.
2. Si vous faites une mise à jour de 4.5.19 à 4.5.24 alors la commande
su plante. Vous devez récupérer la commande su à partir de la
distribution de la _s_l_a_c_k_w_a_r_e 1.2.0 ou supérieure. Éventuellement,
vous pouvez également y récupérer les bibliothèques mises à jour.
3. Vous pouvez avoir quelques problèmes avec NIS et DNS sur la même
machine si vous utilisez une vieille distribution en _a_._o_u_t. Le
serveur DNS ne supporte pas toujours NIS.
4. Lorsqu'un serveur NIS tombe et est relancé, ypbind démarre avec des
messages du genre :
yp_match: clnt_call:
RPC: Unable to receive; errno = Connection refused
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 ypbind puis relancez-le.
5. Après avoir mis à jour la libc version supérieure à 5.4.20, les
outils YP ne fonctionneront plus. Vous devez utiliser les yp-tools
version 1.2 ou supérieure pour la libc >= 5.4.21 et glibc 2.x, et
la version yp-clients 2.2 pour les versions précédentes. yp-tools
2.0 devrait fonctionner avec toutes les bibliothèques.
6. Dans les libc 5.4.21 - 5.4.35, yp_maplist est défectueux. Vous
devrez prendre une version 5.4.36 ou supérieure, sinon, certains
programmes pour YP comme ypwhich généreront une erreur _s_e_g_._f_a_u_l_t.
7. La libc5 avec le NIS traditionnel ne gère pas l'utilisation des
mots de passe Shadow avec NIS. Vous devez donc utiliser la libc5
avec NYS ou la glibc 2.x.
8. ypcat shadow 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".
1133.. FFAAQQ :: LLeess qquueessttiioonnss lleess pplluuss ffrrééqquueemmmmeenntt ppoossééeess
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 :
comp.os.linux.help
ou
comp.os.linux.networking
ou contacter l'un des auteurs de ce HOWTO.
.