Previous Next Table of Contents

11. NYS/NIS/YP ou les comptes distribués

Le service NYS permet de distribuer sur un certain nombre de machines des cartes. Ces cartes sont en fait les fichiers de configuration correspondant aux comptes utilisateurs, aux adresses des différentes machines...

Pratiquement, NYS permet en fait d'utiliser son compte utilisateur avec le même mot de passe et les mêmes paramètres sur n'importe quelle machine appartenant au réseau NYS. Pour cela, on exportera les comptes utilisateur par NFS, et on utilisera NYS pour partager les données et les paramètres sur tous les clients du réseau.

Une fois installé, tous les fichiers de configuration sont centralisés sur le serveur. Cela simplifie grandement les mises à jour, la maintenance, et les ordinateurs clients ont ainsi en local des fichiers minimum.

Les cartes sont créées à partir des fichiers du serveur :

/etc/passwd    -> carte des mots de passe
/etc/group     -> groupe des utilisateurs
/etc/hosts     -> les machines du réseau
/etc/networks  -> liste des sous-réseaux

11.1 Mettre en place le serveur

Avant tout, il faut spécifier à quel domaine NIS appartient la machine. Cela se fait par la commande domainname.

$domainname mon_domaine

Ce domaine est totalement différent du domaine DNS. Vous pouvez donc donner un nom de domaine différent ou identique à votre domaine DNS. Pour éviter les confusions, il est parfois préférable de distinguer ces 2 noms.

Pour ne pas avoir à le faire à chaque fois que vous redémarrez votre machine il suffit d'ajouter dans le fichier /etc/sysconfig/network la ligne

NIS_DOMAIN=mon_domaine

Le nom de domaine sera initialisé automatiquement lors du lancement de ypserv.

Aller ensuite dans le répertoire /var/yp et éditer le Makefile. Aller alors à la ligne all:, elle contient la liste des cartes possibles. Recopiez-là et commentez-là pour en garder une trace.

Laissez une ligne contenant simplement : all: passwd hosts group

Ce sont les trois cartes généralement suffisantes pour la majorité des utilisations, en tout cas elles suffisent largement pour tester. Il sera ensuite toujours temps de rajouter les autres cartes dont vous avez besoin, comme par exemple la carte de /etc/networks.

Ensuite il n'y a plus qu'à faire un make, les cartes vont alors être créés dans le répertoire /var/yp/mon_domaine.

Il faut également éditer le fichier ypserv.conf

sunos_kludge: no
tryresolve: no
dns: no

# Host           : Map            : Security :Passwd_mangle
# 
192.168.1.       : passwd.byname   : port     : yes
192.168.1.       : passwd.byuid    : port     : yes

# Not everybody should see shadow password, not secure, since
# under MSDOG everybody is root and can access ports < 1024 !!! *
                 : shadow.byname   : port     : yes  

Enfin, il faut autoriser les clients à se connecter, pour cela il faut éditer le fichier hosts.allow si ce n'est pas encore fait pour qu'il ressemble à quelque chose comme cela :

ALL: 192.168.1.           ou bien
ALL: fresne, pantera
Il ne reste plus qu'à lancer le démon ypserv.

Le serveur NYS à proprement parler est prêt. Pour que les utilisateurs puissent se connecter de façon transparente sur les clients, il faut maintenant exporter le répertoire de leurs comptes par NFS.
Vous pouvez alors exporter les répertoires /home/un_utilisateur de chaque utilisateur par NFS et les monter sur le client, de préférence en lecture-écriture.

Toutefois, si vous avez un grand nombre d'utilisateurs avec NYS, il parait judicieux de les regrouper dans un seul et même répertoire, /nisusers par exemple que vous n'aurez plus qu'à exporter. Dans ce cas, il faudra également modifier le champ home_directory du fichier /etc/passwd, et le script adduser pour qu'il soit compatible.

11.2 Le client NYS

Il y a encore quelque temps, il était nécessaire de lancer un démon sur le client NIS. Ce client s'appelait ypbind, mais il est maintenant devenu inutile avec la distribution RedHat. En effet les fonctions de NIS ont été intégrées directement dans les librairies, qui ont maintenant le nom de NYS.

La documentation n'est malheureusement pas très claire à ce sujet, et il est parfois difficile de trouver la bonne façon de configurer son client NYS car les différentes docs que j'ai vues se mélangeaient allègrement les pieds entre les 2 implémentations.

Ce sont les fonctions NYS qui sont maintenant utilisés et dont nous parlerons dans ce document.

Il faut tout d'abord configurer comme pour le serveur le nom de domaine. Vous pouvez mettre dans le fichier /etc/sysconfig/network la ligne :

NIS_DOMAIN=mon_domaine
Cela me parait une bonne solution, mais comme le script ypserv n'est évidemment pas lancé, il faudra définir domainname dans un des scripts de lancement.

J'ai donc mis dans /etc/rc.d/rc.sysinit à la suite du hostname la ligne domainname {$NIS_DOMAIN}

   Il faut ensuite créer le fichier /etc/yp.conf
domainname mon_domaine_nis
ypserver mon_serveur_yp
ypsever  mon_deuxieme_serveur

Il permet d'indiquer le nom du serveur yp que l'on utilisera. Il est tout à fait possible de spécifier plusieurs serveurs avec la ligne ypserver. Celui qui sera utilisé est celui qui répondra en premier. Cela sert essentiellement pour des machines qui sont souvent déplacées entre des réseaux différents.

  Éditer également le fichier /etc/nsswitch.conf
passwd:     files nis
group:      files nis
hosts:      files nis dns
networks:   files nis

Ce fichier permet de déterminer par où commencera la recherche d'une information dans les différentes cartes.

Un exemple de ces 2 fichiers se trouve dans /usr/doc/libc-5.3.12-8/

À partir de là, les différentes fonctions de NYS doivent fonctionner.

  Pour le tester, essayons simplement un
$ypcat passwd

Généralement NYS est utilisé avec NFS pour offrir les même comptes utilisateurs sur toutes les machines. Pour cela, exporter les répertoires home des utilisateurs et distribuer les mots de passe par NYS. Ainsi, les utilisateurs peuvent se loguer sur n'importe quel client, et trouvent leur répertoire home et leurs fichiers de travail sur toutes les stations du réseau.

Concrètement, sur votre client une fois NYS correctement configuré, il suffit de monter les répertoires utilisateurs que le serveur a exporté. Si vous voulez l'automatiser, vous pouvez bien entendu mettre l'entrée dans votre /etc/fstab.

11.3 Les fichiers hosts.equiv et .rhosts

Lorsque l'on utilise NYS, on peut généralement utiliser son compte sur plusieurs clients. Pour des raisons pratiques on est parfois amené à se reloguer sur les autres stations régulièrement, et il devient parfois agaçant de devoir sans cesse taper son mot de passe alors que l'on reste sur des clients locaux parfaitement authentifiés.

Il existe donc un moyen pour améliorer la souplesse du rlogin. Il suffit de définir dans le fichier hosts.equiv les machines et les comptes à partir desquels on autorise un rlogin sans mot de passe. Il suffit de mettre une ligne de la forme : machine : bob, marcel, pour que bob et marcel provenant de machine puissent se reloguer sans authentification. Les lignes contenant juste un nom de machine indiquent que tous les utilisateurs venant de cette machine peuvent se loguer sans authentification

Le fichier .rhosts qui existe dans le répertoire home des utilisateurs permet à ceux qui viennent des machines spécifiées de se connecter dans ce compte sans authentification.

Il est clair qu'il faut utiliser cette possibilité avec légèreté et ne pas autoriser n'importe qui (voir autoriser tout le monde) dans ces fichiers au risque de sérieusement réduire la sécurité de son site...

11.4 Le démon yppasswd

Lorsque l'on utilise NYS et les mots de passe distribués, la commande passwd sur un client risque de ne pas avoir le comportement attendu puisque qu'elle va éditer le fichier local /etc/passwd.

C'est donc le démon yppasswd du serveur qui doit se charger de cela. En fait lorsqu'un utilisateur voudra changer son mot de passe, il utilisera la commande yppasswd, qui ira modifier le fichier /etc/passwd du serveur NYS, et qui également mettra à jour les cartes, en faisant appel aux fonctions de notre bon démon.

Pour que l'utilisation de yppasswd soit transparente pour les utilisateurs, vous pouvez renommer le fichier /usr/bin/passwd en lpasswd par exemple, et ensuite vous faites un lien passwd vers yppasswd avec la commande :

ln -sf yppasswd passwd

Les utilisateurs pourront ainsi changer leur mot de passe sans se rendre compte qu'ils utilisent un compte NYS.


Previous Next Table of Contents