Partage de fichier avec NFS (Debian)

NFS, Network File System est un protocole de couche 7 (Application) du modèle OSI. Ce système permet de partager rapidement et sans complexité de configuration du service des données entre les machines de type UNIX. Il existe cependant des versions pour supporter l'OS Macintosh ou Windows.

Malheureusement il représente des failles car ce protocole ne permet pas de vérifier si l'utilisateur qui accède à la ressource est bien authentique. En effet, les droits sur NFS se base uniquement sur le suid ou sgid.

Depuis le serveur

Admettons que notre serveur est une Debian 8 avec un le noyau 3.16 dont son IP est 192.168.42.143.

Nous avons besoin de ce paquet binaire :

apt-get install nfs-kernel-server

Créons le fichier de partage :

mkdir /partage

Indiquons-le explicitement à NFS :

nano /etc/exports

On ajoute ces informations :

/partage 192.168.42.0/24(rw,no_root_squash)

On indique ici que le dossier /partage sera disponible pour les machines présent sur le réseau 192.168.1.0/24 et on utilise ces paramètres :

  • rw : droit de lecture et d'écriture (ou ro pour lecture seule)
  • no_root_squash : autorise les droits root sur le dossier monté sur la machine cliente (ou root_squash, l'option qui n'autorise pas les droits de l'utilisateur root)

On peut également ajouter ces options :

  • insecure : Ecoute sur les ports supérieure à 1024 (ports client)
  • no_subtree_check : Désactive la vérification de l'intégrité des fichiers et améliore les transfères
  • async : Autorise le serveur à répondre favorablement au client même si le fichier n'est encore écrit

Il reste plus qu'a relancer le service :

/etc/init.d/nfs-kernel-server restart

Depuis le client

Pour vérifier que la configuration ci-dessus fonctionne bien, installons le logiciel client :

apt-get install nfs-common

Puis observons les dossiers partagés :

showmount -e 192.168.42.143
Export list for 192.168.42.143:
/partage 192.168.42.0/24

Ainsi on peut monter le dossier comme suit :

mount -t nfs 192.168.42.143:/partage /mnt/

Ou le démonter :

 umount -l /mnt/

Pour que ce point de montage soit permanent il est nécessaire de modifier fstab :

nano /etc/fstab

Et d'ajouter cette ligne :

192.168.42.143:/partage  /mnt   nfs    soft,timeo=5,intr,rsize=8192,wsize=8192  0  0

Ces options veulent dire :

  • soft = délais d'attente d'une réponse courte
  • timeo = temps d'attente en milliseconde avant de renvoyer une nouvelle requête au serveur
  • rsize=X,wsize=X : taille maximale des requêtes

Pour comprendre les autres options, rapportez-vous à la commande : man mount.

Conseils

Si vous ave ce type d'erreurs :

mount.nfs: access denied by server while mounting

Vérifiez que l'arborescence des dossiers soit en lecture et execution! Peut être qu'un chmod 755 devrait faire l'affaire.