Installer un client NIS
Auteur : Olivier BOYER - oboyer () ajoute ! org
Mots clés
Linux, NIS, YP, ypbind, ubuntu
Introduction
Dans notre exemple, il n'existe qu'un seul serveur NIS. Il n'y a pas de serveur de secours. Dans une configuration de production il est préferrable d'avoir au moins un serveur esclave. En effet, si le serveur maitre s'arrête, plus aucun utilisateur du réseau ne peut se s'authentifier.
Cet configuration a été testée avec les distributions : RedHat 9, Crux, Knoppix, Debian, Ubuntu
Paramètres de configuration du domaine NIS
Nom du domaine NIS = leaves Nom du domaine DNS = leaves.org FQDN du Serveur NIS = smoking.leaves.org IP du Serveur NIS = 192.168.1.1 OS du Serveur NIS = *BSD
Note
Toutes les commandes présentées ici, sont à executer, sauf mention contraire, en tant qu'administrateur de la machine.
Activer le client NIS (cas général)
La configuration du client NIS s'effectue via le fichier /etc/yp.conf. Modifiez-le comme suit :
# /etc/yp.conf - ypbind configuration file # Valid entries are # #domain NISDOMAIN server HOSTNAME # Use server HOSTNAME for the domain NISDOMAIN. # #domain NISDOMAIN broadcast # Use broadcast on the local net for domain NISDOMAIN # #ypserver HOSTNAME # Use server HOSTNAME for the local domain. The # IP-address of server must be listed in /etc/hosts. # domain leaves server smoking #OPTIONAL #ypserver smoking #EOF
Modifier les fichiers d'authentification
Pour interroger le service NIS lors de l'autentification d'un utilisateur, ajoutez la ligne suivante aux fichiers :
/etc/nsswitch.conf
Pour indiquer au système de résolution de chercher dans les bases NIS, modifiez comme suit le fichier /etc/nsswitch.conf :
passwd: compat shadow: files nis group: files nis automount: files
/etc/passwd
La grande majorité des Linux utilisent les 'shadow password' pour stocker le mot de passe crypté d'un utilisateur dans un fichier différent du fichier /etc/passwd (en lecture pour tous). Ainsi, les mots de passes sont enregistrés dans le fichier /etc/shadow en lecture uniquement pour l'utilisateur 'root'. Ainsi, seul un processus ayant l'identité de 'root' peux lire le contenu de ce fichier pour authentifier un utilisateur.
Pour chercher les mots de passes cryptés dans le fichier /etc/shadow, le fichier /etc/passwd doit contenir le caractère 'x' dans le deuxième champ. Par exemple :
root:x:0:0:root:/root:/bin/bash
Les systèmes BSD utilisent une technique différente pour stocker les mots de passes cryptés des utilisateurs. Le fichier principal d'authentification est /etc/master.passwd. Le fichier /etc/passwd est généré à partir des données du fichier /etc/master.passwd.
Pour indiquer à la libc de chercher le mot de passe crypté dans le fichier /etc/master.passwd, les systèmes BSD utilisent le caractère '*' en deuxième position dans le fichier /etc/passwd.
On voit le problème, les systèmes V (Linux, Solaris, ..) et BSD n'utilisent pas le même caractère en deuxième position du fichier /etc/passwd pour chercher le mot de passe crypté dans un fichier séparé.
- les systèmes V s'attendent au caractère 'x'
- les systèmes BSD s'attendent au caractère '*'
Dans notre cas, le serveur est sous BSD. Donc, les clients RedHat, et autres Solaris, ne comprennent pas le deuxième champ de la map nis 'passwd'. Ils attendent en effet le caractère 'x' et recoivent à la place le caractère '*”.
La synthaxe ”+::::::” dans le fichier /etc/passwd permet de redéfinir certains champs en local. C'est cette fonctionnalite que nous utilisons pour rendre compatible le système d'authentification des BSD et des systèmes V.
Le caractère '+' indique qu'il faut chercher les informations dans la map NIS 'passwd', et le caractère 'x' indique qu'il faut prendre le mot de passe crypté dans la map NIS 'shadow'.
Ajoutez la ligne suivante à la fin du fichier /etc/passwd:
+:x:::::
Remarque : cette ligne doit toujours être la dernière du fichier. Faites attention lors de l'ajout d'un utilisateur avec la commande useradd.
Modifier le fichier /etc/hosts
La résolution de noms du serveur NIS maître doît toujours pouvoir s'effectuer. Pour cela, il faut ajouter le FQDN et l'adresse IP du serveur NIS dans le fichier : /etc/hosts
Ajoutez la ligne suivante au fichier /etc/hosts
192.168.1.1 smoking.leaves.org smoking
Activer l'autofs
Le daemon autofs permet de monter des systèmes de fichiers réseau automatiquement lors de l'accès à ceux-ci. Par exemple, si le répertoire /home est géré par le daemon autofs, dès qu'un accès en lecture ou écriture est y fait Prenons l'exemple du répertoire /home géré par le daemon autofs. Dès qu'un accès y est fait (en lecture, écriture ou exécution) le daemon autofs teste si la destination existe. Si oui, l'accès continue, si non, alors le daemon consulte son fichier de configuration /etc/auto.master et cherche comment monter la destination.
Ce service est très pratique pour monter automatiquement les 'home directory' sur les clients lors de la connexion d'un utilisateur.
Supposons que les utilisateurs aient leur 'home directory' dans le répertoire /home de la machine 'smoking'
La map NIS auto.home peut être définie comme suit sur le serveur NIS :
* smoking:/home/&
Pour monter automatiquement la 'home directory' d'un utilisateur lors de sa connexion, ajouter la ligne suivante au fichier /etc/auto.master :
/home yp:auto.home
Ainsi, sur le client, tout accès au répertoire /home/toto provoquera le montage NFS suivant :
# mount smoking:/home/toto /home/toto
Configurer sshd
Si vous utilisez le service sshd sur le client dans un environnement NIS, il faut parfois activer l'authentification via le PAM.
Pour ce faire, ajouter les lignes suivantes au fichier : /etc/ssh/sshd_config
# Set this to 'yes' to enable PAM keyboard-interactive authentication # Warning: enabling this may bypass the setting of 'PasswordAuthentication' PAMAuthenticationViaKbdInt yes
Activer le client NIS (sur une Ubuntu)
La ubuntu ne livre pas en standard les packages de gestion du NIS. Pour les installer, procédez comme suit :
# apt-get install nis # apt-get install autofs