Installation très simple comme toujours avec Debian:
# apt install nfs-kernel-server
Exécuter rpcinfo pour confirmer que le serveur est lancé, et accepte les requêtes sur le port 2049 (UDP et TCP).
# rpcinfo -p | grep nfs 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs
Vérifier que le système supporte effectivement NFS:
# cat /proc/filesystems | grep nfs nodev nfs nodev nfs4 nodev nfsd
Si la commande ne renvoie rien, il se peut que le module NFS ne soit pas chargé, auquel cas, il faut le charger avec :
# modprobe nfs
Enfin, vérifions que portmap attend les instructions sur le port 111 :
# rpcinfo -p | grep portmap 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper<pre>
Cette même vérification sera à faire sur le client.
Il faut maintenant indiquer au serveur les répertoires qui seront partagés, les machines qui y auront accès et les conditions de ce partage. Tous ces réglages se font par l'intermédiaire du fichier /etc/exports. Sa structure est la suivante :
<pre>/répertoire_partagé <hôte1>(options de partage) <hôte2>(options de partage)
On indique ici l'adresse ip ou l'intervalle d'adresses ip des machines pouvant accéder au partage. Pour spécifier un intervalle, on joue sur le masque de sous réseau (voir les outils de calculs type gip : http://ip2cidr.com). Les jokers (classiquement * ou ?) sont à proscrire à l'intérieur d'une adresse ip. Ainsi, pour désigner un réseau domestique complet :
192.168.0.0/255.255.255.0
ou
192.168.0.0/24
Les autres solutions pour désigner les machines autorisées sont : nom d'hôte (connus via /etc/hosts ou un DNS), groupes réseau NIS, un domaine ou un sous domaine précédé d'un joker.
Pour que le répertoire “/home” soit exporté et accessible en lecture et écriture (rw) pour l'ensemble des adresses définies par 192.168.0.0/24 SAUF pour l'adresse 192.168.0.28, il faudra inscrire la ligne suivante dans le fichier de configuration “/etc/exports”.
/home 192.168.0.0/28(rw) 192.168.0.16/29(rw) 192.168.0.24/30(rw) 192.168.0.29(rw) 192.168.0.30(rw) 192.168.0.31(rw) 192.168.0.32/27(rw) 192.168.0.64/26(rw) 192.168.0.128/25(rw)
Bon, mais c'est quand même pas très pratique à lire une ligne aussi longue, mais dans le fichier “/etc/exports” il est possible de scinder cette trop longue ligne en plusieurs en utilisant le caractère “\”.
/home 192.168.0.0/28(rw) 192.168.0.16/29(rw) 192.168.0.24/30(rw) 192.168.0.29(rw) 192.168.0.30(rw) 192.168.0.31(rw) 192.168.0.32/27(rw) 192.168.0.64/26(rw) 192.168.0.128/25(rw)
Les options pas défaut sont en majuscule.
Distinction subtile, retenir que : Dans le cas du partage d'un répertoire de type /home, où beaucoup de fichiers peuvent être renommés, préférer no_subtree_check. Pour un répertoire principalement ro, ou peu de fichiers sont renommés (par exemple /usr ou /var), préférer subtree_check.
/ *(ro,async,no_subtree_check,fsdid=0)
Attention, il s'agit d'un point délicat : l'UID de l'utilisateur de la machine cliente est utilisé sur le serveur. Aussi, pour créer un partage respectueux, il faut qu'il y ait correspondance exacte des UIDs/GIDs des utilisateurs/groupes entre le serveur et les clients. Pour contourner cette limitation, des options de mapping sont donc disponibles. Par défaut, les utilisateurs mappés reçoivent l'uid/gid 65534. On peut écraser ces valeurs grâce aux options anonuid et anongid.
On peut résoudre le problème plus proprement en mettant en place un service d'annuaire typiquement NIS, basé lui aussi sur RPC, ou LDAP.
Exemples
/data 192.168.0.25(rw,sync,no_subtree_check) 192.168.0.33(ro,async,no_subtree_check)
/home 192.168.0.0/24(ro,async,no_subtree_check,fsid=0)
/home/pour_root 192.168.0.55(rw,sync,no_subtree_check,no_root_squash)
Installer le paquet nfs-common avec son gestionnaire de paquets habituel, par exemple :
# apt-get install nfs-common
Portmap doit attendre les instructions sur le port 111:
# rpcinfo -p | grep portmap 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper
Les options de montage communes à tous les systèmes de fichiers Pour mémoire, le raccourci “defaults” désigne l'ensemble des options suivantes : rw, suid, dev, exec, auto, nouser, et async.
Parmi toutes les autres options disponibles, les suivantes sont intéressantes :
Lorsq'un montage se fait pour un système de fichiers de type NFS, une série d'options spécifiques est alors disponible. Voici les plus utiles :
On peut utiliser :
# mount -t nfs4 -o <options> <ip_serveur>:<rep_serveur> <point_montage_local>
<ip du serveur>:/répertoire_partagé /point_de_montage nfs4 <options> 0 0
Avec mount, montage de la “racine” nfs4 désigné au deuxième exemple de 1.3.4.
# mount -t nfs4 -o ro 192.168.0.11:/ /tous_les_homes</pre>
/etc/fstab :
...
192.168.0.11:/data /home/serveur_nfs nfs _netdev,nodev,noexec 0 0
...
sur le serveur :
vi /etc/exports
/media/data 192.168.1.54(rw,all_squash,no_subtree_check,sync)
sur le clients :
vi /etc/fstab 192.168.1.100:/media/data /media/data nfs defaults 0 0
vi /etc/idmapd.conf
[General] Verbosity = 0 Pipefs-Directory = /run/rpc_pipefs # set your own domain here, if it differs from FQDN minus hostname # Domain = localdomain [Mapping] Nobody-User = www-data Nobody-Group = www-data