FIXME Les packages knfsd et portmap doivent être installés sur le serveur.
Vérifier que les programmes portmap , mountd et nfsd tournent :
ps aux | grep portmap ps aux | grep mountd ps aux | grep nfsd
Si ces programmes ne tournent pas et qu'ils sont installés, taper /sbin/portmap, /usr/sbin/rpc.mountd ou encore /usr/sbin/rpc.nfsd pour les lancer et modifier les scripts d'initialisation du système pour qu'ils soient lancés lors du prochain démarrage.
Vérifier que tout fonctionne correctement :
rpcinfo -p
Il faut commencer par compiler le noyau avec les bonnes options :
Networking options ---> [*] Kernel/User network link driver (CONFIG_NETLINK) <*> Netlink device emulation (CONFIG_NETLINK_DEV) File systems ---> Network File Systems ---> <*> NFS filesystem support (CONFIG_NFSD) [*] NFS Version 3 filesystem support (CONFIG_NFSD_V3)
La version 3 est supportée à partir des noyaux 2.2.18.
File systems ---> Network File Systems ---> <*> NFS server support (CONFIG_NFSD) [*] Provide NFSv3 server support (CONFIG_NFSD_V3)
Il faut ensuite s'assurer que on a le droit d'exécuter les démons. Pour cela il faut que le fichier /etc/hosts.deny contienne :
AJOUTER NLLE VERSION
portmap:ALL lockd:ALL mountd:ALL rquotad:ALL statd:ALL
et que le fichier /etc/hosts.allow contienne :
portmap: 192.168.1.2 , 192.168.1.3 lockd: 192.168.1.2 , 192.168.1.3 rquotad: 192.168.1.2 , 192.168.1.3 mountd: 192.168.1.2 , 192.168.1.3 statd: 192.168.1.2 , 192.168.1.3
On peut également mettre une ligne comme 192.168.1.0/255.255.255.0 pour autoriser toutes les machines d'adresse 192.168.1.X.
Enfin, il faut éditer le fichier /etc/exports pour préciser quels machines on le droit de monter quels répertoires de notre serveur, et avec quels droits :
# # Les machines d'adresse IP 192.168.1.2 et 192.168.1.3 ont le droit de monter # le repertoire /home en lecture/ecriture (rw) et en lecture seule (ro) # /home 192.168.1.2(rw) 192.168.1.3(ro)
Il est plus sécurisé de mettre des adresses IP, pas des noms. Les syntaxes 192.168.1.0/255.255.255.0, *.chez.moi et 192.168. sont reconnues. Par défaut, un répertoire est monté en lecture seule (ro) et l'utilisateur root sur la machine cliente est l'utilisateur nobody (utilisateur au droits restreints) sur le serveur (root_squash). Pour désactiver ces options (trous de sécurité !), mettre respectivement rw et no_root_squash.
FIXME exportfs -a, afin que mountd et nfsd soient relancés, et le fichier /var/lib/nfs/xtab mis à jour.
L'option link_relative convertit les liens symboliques absolus (dont le nom commence par un '/') en lien relatifs ajoutant le nombre nécessaire de ../
pour aller de l'emplacement du lien à la racine du serveur.
Les options squash_uids et squash_gid permettent de préciser une liste d'UID et de GID qui seront convertis en utilisateurs anonymes. Par exemple, pour convertir les UID 0, 15 et 25 à 50 :
squash_uids=0,15,25-50
L'option all_squash permet de convertire tous les UID/GID en utilisateurs anonymes.
Noter que pour qu'un utilisateur puisse avoir les même droits sur son répertoire d'acceuil monté par NFS (répertoire /home en général), il faut qu'il ait le même UID sur le client qui exporte le répertoire via NFS que sur le serveur où se trouve effectivement le répertoire /home.
L'option map_daemon permet d'activer la conversion dynamique des UID/GID (chaque UID d'une requête NFS est transformé en UID équivalent sur le serveur). Cela nécessite le démon ugidd sur le client.
Pour que ces modifications soient prisent en compte, relancer les services :
# /etc/init.d/netfs reload #
Changer la variable NFS_SERVER dans le fichier /etc/rc.config à yes :
NFS_SERVER="yes"
et lancer SuSEconfig pour que ces modifications soient prisent en compte. Relancer ensuite le serveur :
# /sbin/init.d/nfsserver reload #
# /etc/rc.d/rc.inet2 #
# /etc/init.d/nfs-server start #
Vérifier à l'aide de la commande rpcinfo que tous les services sont bien lancés :
# rpcinfo -p program no_version protocole no_port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100029 1 udp 940 keyserv 100029 2 udp 940 keyserv 100009 1 udp 1015 yppasswdd 100004 2 udp 607 ypserv 100004 1 udp 607 ypserv 100004 2 tcp 610 ypserv 100004 1 tcp 610 ypserv 600100069 1 udp 621 fypxfrd 600100069 1 tcp 623 fypxfrd 100021 1 udp 1025 nlockmgr 100021 3 udp 1025 nlockmgr 100024 1 udp 663 status 100024 1 tcp 665 status 100005 1 udp 667 mountd 100005 1 tcp 669 mountd 100005 2 udp 672 mountd 100005 2 tcp 674 mountd 100003 2 udp 2049 nfs #
et relanser le serveur NFS :
# killall -HUP nfsd #