NIS signifie Network Information Service.
NIS est également appelé YP. YP signifie Pages Jaunes.
NIS est un service de recherche pour un ensemble de bases de données. Dans ce cas, les bases de données peuvent être un fichier passwd, un fichier de groupe, un fichier hosts, etc. Ceci est principalement utilisé comme référentiel central pour contenir tous les noms d'utilisateur et mots de passe (c'est-à-dire /etc/passwd), et différents serveurs peuvent s'authentifier auprès de ce serveur pour le nom d'utilisateur et le mot de passe.
Ceci est très utile pour les administrateurs système qui doivent gérer plusieurs serveurs. Au lieu de créer un compte utilisateur pour vos utilisateurs sur chaque serveur Linux, vous pouvez simplement créer le compte sur un serveur configuré pour exécuter le serveur NIS. Tous les autres serveurs peuvent être configurés en tant que client NIS, qui s'authentifiera auprès de ce référentiel de serveur NIS central.
Il s'agit d'un tutoriel étape par étape qui explique l'installation et la configuration du serveur et du client NIS ypserv.
YPServ signifie Serveur Pages Jaunes.
Si un serveur NIS est déjà configuré et que vous essayez simplement de connecter un serveur Linux à un serveur NIS existant, passez à la section "Configre NIS Client" ci-dessous.
Si vous installez et configurez à la fois le serveur et le client NIS, commencez par la 1ère étape ci-dessous.
Configuration du serveur NIS
1. Vérifier Portmap
Le serveur Portmap mappe le port DARPA au numéro de programme RPC. Pour un client NIS qui effectue des appels RPC pour parler au serveur NIS (qui est un serveur RPC), portmapper doit être en cours d'exécution.
Lorsque le serveur NIS démarre, il informe le mappeur de port sur le port qu'il écoute. Lorsque le client NIS contacte un serveur NIS, il vérifie d'abord avec le mappeur de port et obtient le numéro de port sur lequel les serveurs NIS s'exécutent, puis envoie les appels RPC à ce numéro de port.
Sur la plupart des distributions Linux, portmap sera exécuté par défaut. Assurez-vous qu'il est en cours d'exécution et configuré pour être démarré lorsque le système est redémarré.
# ps -ef | grep -i portmap rpc 3624 1 0 Feb23 ? 00:00:00 portmap root 16908 8658 0 10:35 pts/0 00:00:00 grep -i portmap # chkconfig --list | grep portmap portmap 0:off 1:off 2:off 3:on 4:on 5:on 6:off
2. Installer YPServ
Installez ypserv sur votre serveur en utilisant les méthodes d'installation typiques pour votre distribution Linux respective (par exemple :apt-get, ou yum, ou up2date, etc.).
Si vous souhaitez l'installer à partir de la source, téléchargez la source ypserv.
Sur le système redhat, identifiez le RPM ypserv à partir de votre CD d'installation et installez-le comme indiqué ci-dessous à l'aide de rpm.
# rpm -ivh ypserv-2.19-5.el5.i386.rpm Preparing... ########################################### [100%] 1:ypserv ########################################### [100%]
ypserv sera installé sous /usr/sbin/ypserv
# whereis ypserv ypserv: /usr/sbin/ypserv /etc/ypserv.conf /usr/share/man/man8/ypserv.8.gz
3. Démarrer ypserv
Vérifiez si ypserv est enregistré avec le portmap comme indiqué ci-dessous.
# rpcinfo -u localhost ypserv rpcinfo: RPC: Program not registered program 100004 is not available
La sortie ci-dessus indique soit ypserv n'est pas installé, soit ypserv est installé mais pas encore démarré. La vérification rapide suivante indique que ypserv n'est pas encore démarré.
# chkconfig --list | grep yp ypbind 0:off 1:off 2:off 3:off 4:off 5:off 6:off yppasswdd 0:off 1:off 2:off 3:off 4:off 5:off 6:off ypserv 0:off 1:off 2:off 3:off 4:off 5:off 6:off ypxfrd 0:off 1:off 2:off 3:off 4:off 5:off 6:off # service ypserv status ypserv is stopped
Définissez le NISDOMAIN dans le fichier /etc/sysconfig/network comme indiqué ci-dessous.
# vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=prod-db GATEWAY=192.168.1.1 NISDOMAIN=thegeekstuff.com
Démarrez ypserv comme indiqué ci-dessous.
# service ypserv start Setting NIS domain name thegeekstuff.com: [ OK ] Starting YP server services: [ OK ]
Certains paramètres de configuration du serveur NIS sont définis dans le fichier /etc/ypserv.conf. Mais, vous n'avez pas besoin de modifier les valeurs par défaut dans ce fichier.
4. Générer une base de données NIS
Une fois ypserv installé et démarré, il est temps de générer la base de données NIS. Toutes les bases de données NIS sont stockées dans le répertoire /var/yp. Avant de générer la base de données, vous ne verrez pas le répertoire de votre nom de domaine sous /var/yp.
# ls -l /var/yp total 36 drwxr-xr-x 2 root root 4096 May 18 2010 binding -rw-r--r-- 1 root root 16669 Oct 31 2008 Makefile -rw-r--r-- 1 root root 185 Jun 6 2007 nicknames
Générez la base de données NIS à l'aide du programme ypinit comme indiqué ci-dessous. Il vous suffit d'entrer le nom d'hôte de votre serveur NIS pour générer la base de données.
# /usr/lib/yp/ypinit -m Please continue to add the names for the other hosts, one per line. When you are done with the list, type a . next host to add: prod-db next host to add: The current list of NIS servers looks like this: prod-db Is this correct? [y/n: y] y We need a few minutes to build the databases... Building /var/yp/thegeekstuff.com/ypservers... Running /var/yp/Makefile... gmake[1]: Entering directory `/var/yp/thegeekstuff.com' Updating passwd.byname... Updating passwd.byuid... Updating group.byname... Updating group.bygid... Updating hosts.byname... Updating hosts.byaddr... ... gmake[1]: Leaving directory `/var/yp/thegeekstuff.com' prod-db has been set up as a NIS master server. Now you can run ypinit -s prod-db on all slave server.
Après avoir généré la base de données, vous pouvez voir qu'un nouveau répertoire pour votre domaine est créé sous /var/yp comme indiqué ci-dessous.
# ls -l /var/yp total 44 drwxr-xr-x 2 root root 4096 Oct 8 10:59 thegeekstuff.com drwxr-xr-x 2 root root 4096 May 18 2010 binding -rw-r--r-- 1 root root 16669 Oct 31 2008 Makefile -rw-r--r-- 1 root root 185 Jun 6 2007 nicknames -rw-r--r-- 1 root root 10 Aug 31 10:58 ypservers
Le /var/yp/ypservers contiendra le nom d'hôte de votre serveur NIS.
# cat /var/yp/ypservers prod-db
5. Vérifier l'installation
Vérifiez l'installation du serveur NIS en vérifiant si le fichier passwd est accessible à l'aide du programme client NIS ypcat.
# ypcat passwd No such map passwd.byname. Reason: Can't bind to server which serves this domain
Vous pouvez obtenir le message d'erreur ci-dessus car ypbind peut ne pas s'exécuter sur votre système. Démarrez simplement ypbind et vérifiez la configuration.
# service ypbind start # ypcat passwd ramesh:R7EFEGJ1mxRGwVLVC.:401:401::/home/ramesh:/bin/bash john:QtlRW$Fx.uZvD:402:402::/home/john:/bin/bash
Si vous n'aimez pas afficher le champ passwd chiffré dans la sortie ypcat passwd, définissez MERGE_PASSWD sur false dans /var/yp/Makefile comme indiqué ci-dessous.
# vi /var/yp/Makefile MERGE_PASSWD=false
Après avoir fait ce qui précède, la commande ypcat passwd affichera simplement un "x" dans le fichier passwd.
# ypcat passwd ramesh:x:401:401::/home/ramesh:/bin/bash john:x:402:402::/home/john:/bin/bash
Chaque fois que vous apportez une modification (soit des mises à jour du Makefile, soit des modifications d'une base de données). Par exemple, lorsque vous ajoutez un nouvel utilisateur ou modifiez un compte d'utilisateur existant, vous devez procéder comme suit. Sans cela, les modifications ne seront répercutées sur aucun de vos clients NIS.
# cd /var/yp # make
Je vous recommande de l'ajouter au travail cron racine sur votre serveur NIS pour l'exécuter toutes les 15 minutes. De cette façon, vous n'avez pas à vous soucier de l'exécuter manuellement chaque fois que vous apportez des modifications à la base de données NIS.
Configuration du client NIS
Les étapes suivantes doivent être exécutées sur le client NIS. Dans l'exemple ci-dessus, nous avons installé le serveur NIS sur un nom de serveur appelé prod-db. Si vous souhaitez qu'un autre serveur Linux dev-db utilise le fichier /etc/passwd sur prod-db pour l'authentification, vous devez effectuer les étapes suivantes sur le serveur dev-db (client NIS).
6. Définir le nom de domaine sur le client
Vérifiez que le nom de domaine est correctement défini sur ce serveur. Si cela ne renvoie pas le bon nom de domaine. Exécutez ‘domainname {votre-domaine}’ pour définir le nom de domaine sur le serveur.
# domainname thegeekstuff.com
La commande domainname définira temporairement le nom de domaine. c'est-à-dire que si vous redémarrez le système, le nom de domaine disparaîtra. Pour rendre le nom de domaine permanent, mettez à jour le fichier réseau et définissez le paramètre NISDOMAIN comme indiqué ci-dessous.
# cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=dev-db GATEWAY=192.168.1.4 NISDOMAIN=thegeekstuff.com
7. Définir le nom du serveur NIS sur le client
Ajoutez la ligne suivante au fichier /etc/yp.conf. Cela indique au client NIS que le serveur NIS est prod-db. Au lieu de prod-db ci-dessous, vous pouvez également donner l'adresse IP du serveur prod-db.
# vi /etc/yp.conf domain thegeekstuff.com server prod-db
8. Démarrer le ypbind sur le client
ypbind est un programme de liaison NIS. Cela recherche un serveur NIS pour votre domaine NIS et conserve les informations de liaison NIS.
Assurez-vous que ypbind est opérationnel sur le serveur client NIS. La plupart des distributions Linux ont déjà installé ypbind. S'il ne fonctionne pas, démarrez-le.
# ps -ef | grep ypbind # service ypbind start
Vérifiez l'installation du serveur NIS en vérifiant si le fichier passwd est accessible à l'aide du programme client NIS ypcat.
# ypcat passwd No such map passwd.byname. Reason: Can't bind to server which serves this domain
Vous pouvez obtenir le message d'erreur ci-dessus car ypbind peut ne pas s'exécuter sur votre système. Démarrez simplement ypbind et vérifiez la configuration.
# service ypbind start # ypcat passwd ramesh:x.:401:401::/home/ramesh:/bin/bash john:x:402:402::/home/john:/bin/bash