# Partage de fichiers avec NFS

<div data-en-clipboard="true" data-pm-slice="1 1 []" id="bkmrk-ce-tutoriel-a-%C3%A9t%C3%A9-r%C3%A9">Ce tutoriel a été réalisé grâce à l'article [https://www.it-connect.fr/le-protocole-nfs-pour-les-debutants/#V\_Creer\_un\_partage\_NFS\_sous\_Debian\_Linux](https://www.it-connect.fr/le-protocole-nfs-pour-les-debutants/#V_Creer_un_partage_NFS_sous_Debian_Linux)</div><div id="bkmrk--17"></div><div id="bkmrk--18"></div><div id="bkmrk-le-partager-nfs-est-">Le partager NFS est un peu plus complexe à mettre en œuvre que le partage samba, et n'est pas accessible depuis un poste sous Windows, mais il est beaucoup plus simple à utiliser une fois mis en place, car il se comporte comme un dossier local. Ainsi il n'y aura aucun problème d'enregistrement ou de lecture de fichiers quel que soit le logiciel utilisé.</div>#### Opérations à effectuer sur le poste serveur

<div id="bkmrk-on-installe-le-paque">On installe le paquet nécessaire à la création du partage</div><div id="bkmrk-sudo-apt-get-install">`sudo apt-get install nfs-kernel-server`</div><div id="bkmrk-le-serveur-nfs-est-i">Le serveur NFS est installé, on le configure pour qu'il démarre automatiquement avec le système :</div><div data-codeblock="true" data-line-wrapping="false" id="bkmrk-sudo-systemctl-enabl"><div data-plaintext="true">`sudo systemctl enable nfs-server.service`</div></div><div id="bkmrk-on-cr%C3%A9e-un-dossier-d">On crée un dossier de partage, par exemple :</div><div data-codeblock="true" data-line-wrapping="false" id="bkmrk-sudo-mkdir-%2Fmedia%2Fpa"><div data-plaintext="true">`sudo mkdir /media/partage-nfs`</div></div><div id="bkmrk-puis-on-applique-les">Puis on applique les droits sur le partage (à adapter selon ses besoins) :</div><div data-codeblock="true" data-line-wrapping="false" id="bkmrk-sudo-chown-nobody%3Ano"><div data-plaintext="true">`sudo chown nobody:nogroup /media/partage-nfs/`</div><div data-plaintext="true">`sudo chmod 777 /media/partage-nfs/`</div></div><div id="bkmrk-777-indique-que-tout">**777** indique que toute personne aura des droits de lecture, écriture et exécution dans ce dossier. Ce sont les droits les plus permissifs.</div><div id="bkmrk-ce-nombre-s%27interpr%C3%A8">Ce nombre s'interprète de la manière suivante :</div><div id="bkmrk-le-1er-chiffre-conce">- le 1er chiffre concerne les droits du propriétaire

</div><div id="bkmrk-le-second-les-droits">- le second les droits du groupe

</div><div id="bkmrk-le-3%C3%A8-de-tous-les-au">- le 3è de tous les autres

</div><div id="bkmrk-pour-chaque-chiffre%2C">Pour chaque chiffre,</div><div id="bkmrk-4-indique-le-droit-d">- 4 indique le droit de lecture

</div><div id="bkmrk-2-indique-le-droit-d">- 2 indique le droit d'écriture

</div><div id="bkmrk-1-indique-le-droit-d">- 1 indique le droit d'exécution,

</div><div id="bkmrk-ces-chiffres-s%27addit">ces chiffres s'additionnant :</div><div id="bkmrk-ainsi-4-%2B2%2C-donc-6%2C-">- ainsi 4 +2, donc 6, indique droit de lecture et d'écriture, mais pas d'exécution

</div><div id="bkmrk-4-%2B-1%2C-donc-5%2C-droit">- 4 + 1, donc 5, droit de lecture et d'exécution, mais pas d'écriture,

</div><div id="bkmrk-4%2B2%2B1%2C-donc-7%2C-droit">- 4+2+1, donc 7, droit de lecture, écriture et exécution,

</div><div id="bkmrk-etc.">- etc.

</div><div id="bkmrk-le-partage-nfs-doit-">Le partage NFS doit être indiqué et paramétré dans le fichier /etc/exports</div><div id="bkmrk-on-peut-l%27%C3%A9diter-par">On peut l'éditer par</div><div data-codeblock="true" data-line-wrapping="false" id="bkmrk-sudo-nano-%2Fetc%2Fexpor"><div data-plaintext="true">`sudo nano /etc/exports`</div></div><div id="bkmrk-on-y-ajoute-la-ligne">On y ajoute la ligne suivante :</div><div data-codeblock="true" data-line-wrapping="false" id="bkmrk-%2Fsrv%2Fpartagenfs-192."><div data-plaintext="true">`/srv/partagenfs 192.168.1.0/24(rw,sync,anonuid=65534,anongid=65534,no_subtree_check)`</div></div><div id="bkmrk-%2Fmedia%2Fpartage-nfs-e">- /media/partage-nfs est le chemin du dossier que l'on a choisi comme partage précédemment

</div><div id="bkmrk-192.168.1.0%2F24-l%27adr" marginbottom="15">- 192.168.1.0/24 l'adresse de votre réseau local et le masque de sous-réseau

</div><div id="bkmrk-il-est-possible-d%27in" marginbottom="15">Il est possible d'indiquer une une ou des adresses IP spécifiques, ou un ou plusieurs réseaux</div><div id="bkmrk-exemple-pour-plusieu">Exemple pour plusieurs réseaux :</div><div id="bkmrk-%2Fmedia%2Fpartage-nfs-1">/media/partage-nfs 192.168.1.0/24(rw,sync,anonuid=65534,anongid=65534,no_subtree_check) 10.0.0.0/24(rw,sync,anonuid=65534,anongid=65534,no_subtree_check)</div><div id="bkmrk-on-a-ensuite-les-opt">On a ensuite les options de partage :</div><div id="bkmrk-rw-%3A-partage-accessi">- **rw** : partage accessible en lecture et écriture, à remplacer par "ro" pour la lecture seule

</div><div id="bkmrk-sync-%3A-%C3%A9crire-les-do">- **sync** : écrire les données et les vérifier avant de répondre à la requête suivante : plus lent, mais plus fiable vis-à-vis des corruptions de données. L'autre mode est "async".

</div><div id="bkmrk-anonuid-%3A-id-de-l%27ut">- **anonuid** : ID de l'utilisateur à utiliser pour les connexions anonymes (65534 = nobody)

</div><div id="bkmrk-anongid-%3A-id-du-grou">- **anongid** : ID du groupe à utiliser pour les connexions anonymes (65534 = nogroup)

</div><div id="bkmrk-no_subtree_check-%3A-d">- **no\_subtree\_check** : désactiver la vérification des sous-dossiers, recommandé pour des raisons de fiabilité

</div><div id="bkmrk-on-doit-ensuite-fair">On doit ensuite faire prendre en compte la configuration par le système par la commande :</div><div data-codeblock="true" data-line-wrapping="false" id="bkmrk-sudo-exportfs--a"><div data-plaintext="true">`sudo exportfs -a`</div></div><div id="bkmrk-nota-%3A">  
</div><p class="callout info">Pour stopper et purger les partages NFS, il faut exécuter la commande suivante :  
`sudo exportfs -ua`  
Pour afficher la liste des partages NFS sur l'hôte précisé :  
showmount -e IP-serveur  
</p>

#### Opérations à effectuer sur les postes clients

<div id="bkmrk-on-installe-le-paque-0">On installe le paquet nfs-common</div><div data-codeblock="true" data-line-wrapping="false" id="bkmrk-sudo-apt-get-install-0"><div data-plaintext="true">`sudo apt-get install nfs-common`</div></div><div id="bkmrk-on-cr%C3%A9e-un-r%C3%A9pertoir">On crée un répertoire local dans lequel sera monté le partage NFS :</div><div data-codeblock="true" data-line-wrapping="false" id="bkmrk-sudo-mkdir-%2Fmon-doss"><div data-plaintext="true">`sudo mkdir /mon-dossier/partage-nfs`</div></div><div id="bkmrk-puis-on-effectue-le-">Puis on effectue le montage du partage du dossier hôte sur notre poste client :</div><div data-codeblock="true" data-line-wrapping="false" id="bkmrk-sudo-mount--t-nfs4-i"><div data-plaintext="true">`sudo mount -t nfs4 IP-hôte:/media/partage-nfs /mon-dossier/partage-nfs`</div></div><div id="bkmrk-pour-ne-pas-avoir-%C3%A0-">Pour ne pas avoir à faire le montage manuellement, ou par un script au démarrage de session, le plus simple est d'inscrire le montage dans le fichier /etc/fstab :</div><div data-codeblock="true" data-line-wrapping="false" id="bkmrk-sudo-nano-%2Fetc%2Ffstab"><div data-plaintext="true">`sudo nano /etc/fstab`</div></div><div id="bkmrk-on-y-inscrit-la-lign">On y inscrit la ligne suivante, en adaptant selon sa configuration locale et ses besoins :</div><div data-codeblock="true" data-line-wrapping="false" id="bkmrk-ip-h%C3%B4te%3A%2Fmedia%2Fparta"><div data-plaintext="true">`IP-serveur:/media/partage-nfs /mon-dossier/partage-nfs nfs4 defaults,user,exec 0 0`</div></div><div id="bkmrk-pour-ne-pas-avoir-%C3%A0--0">Pour ne pas avoir à redémarrer pour que la nouvelle configuration du fichier fstab soit prise en compte, on peut relancer ce fichier par</div><div data-codeblock="true" data-line-wrapping="false" id="bkmrk-sudo-mount--a"><div data-plaintext="true">`sudo mount -a`</div></div><div id="bkmrk--19"></div><div id="bkmrk-tout-dossier-ou-fich">Tout dossier ou fichier du répertoire /mon-dossier/partage-nfs se retrouvera dès lors dans le dossier /media/partage-nfs du PC hôte, et sera accessible en lecture et écriture depuis n'importe quel poste client sur lequl on aura configuré cet accès.</div>