Attention : Vérifier que le service rpcbind est bien démarré, sinon il faut penser à le lancer.
$/etc/init.d/rpcbind start
On choisit un nom de domaine mydomain :
root@immortal:~ #echo mydomain > /etc/defaultdomain
On positionne également le nom de domaine courant à mydomain
root@immortal:~ #domainname mydomain
On peut vérifier que le domainne courant est bien positionné en tapant la commande domainname.
On configure immortal comme serveur (maître), en indiquant dans le fichier /etc/default/nis
... # Are we a NIS server and if so what kind (values: false, slave, master)? NISSERVER=master ...
Puis on construit la base de données, en exportant les comptes courants (définis dans /etc/passwd) comme des comptes NIS.
root@immortal:~ #cd /var/yp/ ; make
Un message d'erreur indique que le serveur ne NIS n'est pas encore lançé !
On démarre donc le serveur NIS :
root@immortal:~ #/etc/init.d/nis restart Starting NIS services: ypserv yppasswdd ypxfrd ypbind.
OK c'est parti… sinon on vérifie les logs (/var/log/syslog).
On regénère proprement la basse de données NIS.
root@immortal:~ # cd /var/yp/ root@immortal:~ # rm -rf mydomain # raz de la database root@immortal:~ # make # on génére à nouveau la database
Updating passwd.byname... Updating passwd.byuid... Updating group.byname... Updating group.bygid... Updating hosts.byname... Updating hosts.byaddr... Updating rpc.byname... Updating rpc.bynumber... Updating services.byname... Updating services.byservicename... Updating netid.byname... Updating protocols.bynumber... Updating protocols.byname... Updating netgroup... Updating netgroup.byhost... Updating netgroup.byuser... Updating shadow.byname...
Tous les utilisateurs locaux sur le serveur NIS avec un UID > 1000 sont exportés dans la database.
En lançant la commande rpcinfo -p on voit apparaître les différents services RPC utiles à NIS : ypserv, yppasswdd, ypbind, fypxfrd.
On vérifie que le fichier /etc/default/nis est bien configuré pour être client NIS. Puis on configure le nom de domaine NIS et on démarre le service NIS (côté client).
root@grave:~ #echo "mydomain" > /etc/defaultdomain root@grave:~ #domainname mydomain root@grave:~ #/etc/init.d/nis restart Starting NIS services: ypbind.
Pour vérifier que l'on trouve bien le serveur NIS depuis le client :
root@grave:~ #ypwhich 192.168.0.1
Pour afficher la liste des comptes utilisateur NIS :
root@grave:~ #ypcat passwd
Il faut ensuite éditer le fichier /etc/nsswitch.conf qui sert à expliquer à l'OS quelle stratégie utiliser pour l'autenthification (unix files, nis, ldap, compat, …)
passwd: files nis # compat group: files nis # compat shadow: files nis # compat ...
Attention, il faut recharger le fichier nsswitch.conf il faut faire :
/etc/init.d/nscd restart
Avec la séquence files nis, on vérifie d'abord les comptes locaux dans /etc/, puis après on cherche sur le serveur NIS.
On commence par désactiver kerberos & ldap
root@immortal:~ #pam-auth-update
Puis on ajoute les utilisateurs Unix titi et tutu :
root@immortal:~ #adduser titi password titi root@immortal:~ #adduser tutu pasword tutu
On met à jour la base de données NIS :
root@immortal:cd /var/yp ; make
Updating passwd.byname... Updating passwd.byuid... Updating netid.byname... Updating shadow.byname...
Maj de la base, pas besoin de restarter le serveur NIS…
root@grave:~ #ypcat passwd tutu:x:1002:1002:,,,:/home/tutu:/bin/bash titi:x:1001:1001:,,,:/home/titi:/bin/bash toto:x:1000:1000:,,,:/home/toto:/bin/bash
Pour tester NIS on passe par un tiers utilisateur plutôt que par root (root ne vérfie pas le password) !
root@grave:~ #su toto toto@grave:/root$ su titi Mot de passe : xxxx titi@grave:/root$
Il ne faut pas oublier de configurer le serveur NFS comme un client NIS ! Pour mettre à jour le cache des utilisateurs NIS sur un client, il est utile de relancer le démon NSCD (NameService Cache Daemon) /etc/init.d/nscd restart
Côté serveur NFS
On configure le serveur NFS sur syl ; grave sert de client.
Sur le serveur, le répertoire NFS sera /pub.
root@syl$ mkdir /pub
On indique cela /etc/exports de la façon suivante :
/pub (rw,no_root_squash)
Autres Exemples (man exports) :
/pub host1(ro) host2(rw,no_root_squash) /pub @netgroup(rw) /pub (ro)
Par defaut, root_squash : l'utilisateur root (uid=0,gid=0) est mappé sur anonymous avec des droits restreints ! Autres options : no_root_squash, all_squash
On démarre le common et le serveur NFS (nécessaire après chaque modif de /etc/exports) :
root@grave$ /etc/init.d/nfs-common restart root@grave$ /etc/init.d/nfs-kernel-server restart
Côté client NFS
Sur grave, déjà configuré comme un client NIS.
On démarre le common NFS (après chaque modif de /etc/exports) :
root@grave$ /etc/init.d/nfs-common restart
On crée le montage NFS dans /mnt/pub :
root@grave$ mkdir /mnt/pub root@grave$ chmod 777 /mnt/pub root@grave$ mount -t nfs -o nfsvers=3 192.168.0.1:/pub /mnt/pub # @serveur_nfs = 192.168.0.1
On crée des fichiers vides (commande touch) sur la machine client en tant que tutu et titi.
root@grave:/mnt/pub$ su tutu tutu@grave:/mnt/pub$ touch tutu root@grave:/mnt/pub$ su titi titi@grave:/mnt/pub$ touch titi
On vérifie les droits…
root@grave:/mnt/pub$ ls -l -rw-r--r-- 1 titi titi 0 2008-03-11 13:28 titi -rw-r--r-- 1 tutu tutu 0 2008-03-11 13:28 tutu
On peut également configurer le point de montage de manière permanente dans /etc/fstab
root@grave$ jmacs /etc/fstab
<file system> <mount point> <type> <options> <dump> <pass> 192.168.0.3:/pub /mnt/test nfs rw 0 0
Donc on a :
Pour terminer de tout bien configurer, il faut créer sur le serveur NFS les repertoires /pub/tutu et /pub/titi appartenant respectivement aux utilsateurs tutu et titi, avec les bons droits d'accès Unix. Il faut ensuite mettre à jour le /etc/passwd du serveur NIS pour indiquer comme home directory les répertoires /mnt/pub/tutu et /mnt/pub/titi. Puis on met à jour la base NIS. Et on teste sur le client que l'on se connecte bien dans le home directory monté par NFS. Pensez à recharger le cache NSCD côté client NIS avant de faire des tests