====== TP6 (NIS & NFS) ====== __Attention__ : Vérifier que le service //rpcbind// est bien démarré, sinon il faut penser à le lancer. $/etc/init.d/rpcbind start == Configuration du serveur NIS== 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//. ==Configuration du client== 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. == Ajouter des nouveaux utilisateurs NIS sur le serveur == 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$ ==Configuration de NFS== 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 192.168.0.3:/pub /mnt/test nfs rw 0 0 ==En conclusion== Donc on a : * immortal : serveur NIS (compte NIS tutu et titi) * syl : serveur NFS (export de /pub) & client NIS * grave : client NIS & NFS (montage dans /mnt/pub) 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 ;-)