Un simple partage NFS
Ce tutoriel propose une méthode qui se veut la plus simple possible pour accéder à distance aux documents enregistrés sur un ordinateur à partir d'un autre en utilisant le protocole NFS.
Pré-requis
Deux ordinateurs fonctionnant avec GNU/Linux
Serveur sur lequel se trouvent les fichiers à partager, et Client qui doit pouvoir accéder aux fichiers de Serveur.
Avoir les droits d'administration sur les deux machines
Ne pas avoir peur de la ligne de commande
Connaître les adresses IP locales de Serveur et de Client
inet adr:
», paragraphe « eth
(ou enp2s0 ou enp3s0 ou enpxxxxx ) » si vous êtes connecté en Ethernet, « wlan
ou "wlpxxx" » pour une connexion Wi-Fi.
Pour la suite de cet exemple, on considérera que Serveur et Client ont une adresse locale fixe :
- Serveur : 192.168.1.1
- Client : 192.168.1.2
- Soit à partir de l'interface du routeur / de la *box. Ouvrez Firefox, et tapez dans la barre d'adresse celle donnée dans le mode d'emploi du routeur / de la *box (le login et le mot de passe y sont aussi). Plus d'infos.
- Soit directement d'Ubuntu .
Se faire un aide-mémoire
Les machines | IP locales | Points de montage des fichiers |
---|---|---|
Serveur | 192.168.1.1 | /Fichiers_à_partager_sur_Serveur |
Votre serveur | IP de votre serveur | Exemple : /home/Votre_Nom_d'Utilisateur_sur_Votre_Serveur |
Client | 192.168.1.2 | /Point_de_montage_sur_Client |
Votre client | IP de votre client | Exemple : /home/Nom_d'Utilisateur_sur_le_Client/Partage |
Installer NFS
- Pour Serveur, nfs-kernel-server et nfs-common.
- Pour Client, seulement nfs-common.
Étape 1 - Serveur donne à Client le droit de lire et écrire sur ses fichiers
Sur Serveur donc, il faut ouvrir ou créer le fichier /etc/exports et y saisir cette ligne :
# Dossier partagé : /Fichiers_à_partager_sur_Serveur/ 192.168.1.2(rw,all_squash,anonuid=1000,anongid=1000,sync)
Explications sur les options de cette commande.
Attention : l'IP:192.168.1.2 est celle du client autorisé à recevoir le partage
Pour ne donner l'accès qu'en lecture seule, il suffit de supprimer l'option rw de /etc/exports.
/Fichiers_à_partager_sur_Serveur/ 192.168.0.0/255.255.0.0(rw,all_squash,anonuid=1000,anongid=1000,sync)
- Ou en créant autant de lignes dans le fichier /etc/exports de Serveur que de dossiers à partager et en adaptant en conséquence la configuration de Client.
Il faut ensuite démarrer le serveur NFS (toujours sur Serveur) :
sudo /etc/init.d/nfs-kernel-server start
sudo /etc/init.d/nfs-kernel-server restart
Étape 2 - Client se prépare à recevoir les fichiers de Serveurs
1. D'abord créer un répertoire sur Client où vont s'installer les fichiers de Serveur :
sudo mkdir /Point_de_montage_sur_Client
Plus d'infos sur la commande mkdir.
Par exemple :
sudo mkdir /home/Nom_d'Utilisateur_sur_le_Client/Partage
2. Ensuite déterminer ce répertoire comme point de montage sur Client :
Présentation de la notion de point de montage et du fichier fstab et ses options.
Ajoutez cette ligne au fichier /etc/fstab de Client :
Le fichier fstab est un fichier très important pour le bon fonctionnement de votre ordinateur.
Prenez bien soin d'ajouter simplement la ligne suivante (en l'adaptant) en bas du fichier sans modifier ce qu'il contient déjà.
192.168.1.1:/Fichiers_à_partager_sur_Serveur /Point_de_montage_sur_Client nfs user,noauto 0 0
L'option noauto interdit le montage automatique. L'option user autorise tous les utilisateurs à procéder au montage.
Les options sont à choisir en fonction du mode d'accès souhaité pour le partage : liste et usage des options de montage.
192.168.1.1:/Fichiers_à_partager_sur_Serveur /Point_de_montage_sur_Client
ou
192.168.1.1:/Fichiers_à_partager_sur_Serveur/ /Point_de_montage_sur_Client/
Étape 3 - Serveur règle la sécurité du partage
1. D'abord interdire tout :
Sur Serveur donc, ouvrez ou créez le fichier /etc/hosts.deny, et copiez-y ces lignes :
# Tout interdire sur portmap, nfsd et mountd portmap:ALL nfsd:ALL mountd:ALL
2. Ensuite autoriser les échanges voulus :
Toujours sur Serveur, ouvrez ou créez le fichier /etc/hosts.allow, et enregistrez-y ces lignes (en adaptant bien sûr les IP) :
#Autoriser ce client à se connecter aux services (essentiellement : portmap, nfsd et mountd) : portmap: 192.168.1.2 lockd: 192.168.1.2 nfsd: 192.168.1.2 mountd: 192.168.1.2 rquotad: 192.168.1.2 statd: 192.168.1.2
- En définissant une plage, par exemple :
192.168.0.0/192.168.0.20
- En listant les IP locales autorisées (séparées par des espaces), comme par exemple :
192.168.0.1 192.168.0.3 192.168.0.8
- Ou encore en utilisant la syntaxe
192.168.
qui autorise toutes les machines dont l'IP locale commence par 192.168. à se connecter.
Remarque : certaines installations (debian squeeze par exemple) limitent les accès portmap en local. Pour modifier cette configuration : dpkg-reconfigure portmap
Étape 4 - Client automatise l'accès aux fichiers de Serveurs
Sur Client donc, créez le fichier /usr/bin/Monter_le_partage_NFS (où Monter_le_partage_NFS peut être remplacé par ce que vous voulez), et enregistrez-y ces lignes :
#!/bin/bash sleep 15 mount /Point_de_montage_sur_Client
N'oubliez pas de rendre ce fichier exécutable, via l'interface graphique ou en ligne de commande dans un terminal:
$ sudo chmod 755 /usr/bin/Monter_le_partage_NFS
Pour que le montage soit vraiment automatique il suffit d'ajouter la commande /usr/bin/Monter_le_partage_NFS
aux programmes qui sont lancés automatiquement à l'ouverture de session. Ce qui se fait en mode graphique de manières différentes selon les versions d'Ubuntu. À chercher donc dans les préférences du système ou de la session de Client.
Pour Lubuntu
sudo leafpad /etc/xdg/lxsession/Lubuntu/autostart
Puis ajouter la ligne :
@/usr/bin/Monter_le_partage_NFS
Pour Xubuntu
Allez dans le Gestionnaires de paramètres → Sytème / Session et démarrage → onglet Démarrage automatique → Ajouter
Remplissez les champs ainsi :
. Nom = Ce_que_vous_voulez
. Description = optionnel
. Commande = usr/bin/Monter_le_partage_NFS
Validez et au prochain démarrage, le partage doit se monter automatiquement.
Pour tous
Il existe aussi la possibilité d'utiliser autofs.
Résolution de problèmes
1. La première chose à faire est de vérifier si vous avez bien suivi ce tuto sans faire d'erreur.
En particulier dans les fichiers de configuration qui sont sensibles à la casse.
Quelques questions à se poser pour guider sa recherche d'erreur :
- N'ai-je pas oublié une majuscule ?
- N'y a-t-il pas eu échange de rôle entre Client et Serveur (cause fréquente d'erreurs) ?
- Ai-je bien mis tous les points des adresses IP ?
- N'ai-je pas échangé un 0 pour un 1 dans cette IP-là ?
- Ne manque-t-il pas une espace ici ?
2. Relancer le serveur NFS de Serveur.
À faire sur Serveur
sudo service nfs-kernel-server restart
Si vous obtenez une erreur faites une recherche avec le message sur le forum Ubuntu.
Vous pouvez ignorer un message de type :
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.1.2:/Fichiers_à_partager_sur_Serveur/
il n'indique rien qui empêcherait le bon fonctionnement.
3. Vérifier si Client a bien accès aux fichiers de Serveur.
À faire sur Client
showmount -e 192.168.1.1
Cette commande doit retourner quelque chose comme :
Export list for 192.168.1.1: /home/Fichiers_à_partager_sur_Serveur 192.168.1.2
Sinon vérifier tout particulièrement les fichiers « /etc/exports » et « /etc/hosts.allow » de Serveur.
4. Tester manuellement le montage sur Client.
À faire sur Client
Lancez cette commande :
sudo mount -t nfs -o rw 192.168.1.1:/Fichiers_à_partager_sur_Serveur /Point_de_montage_sur_Client
Si vous n'obtenez pas de message d'erreur, c'est que le montage se fait bien manuellement. Vérifier tout particulièrement les fichiers « /etc/fstab » et « /usr/bin/Monter_le_partage_NFS » de Client. Si vous obtenez une erreur, faites une recherche avec le message sur le forum Ubuntu.
5. Configurer le pare-feu.
Il arrive que sur certaines configurations, le pare-feu bloque les échanges nécessaires au bon fonctionnement de NFS. Cela ne devrait pas être le cas sur Ubuntu, sauf si vous avez personnalisé les règles du pare-feu. Cela peut également provenir du routeur (*box).
Dans ces deux cas, voici ce qu'il vous faut paramétrer.
6. Ubuntu 16.04 ne réussis pas à s'arreter.
La version 16.04 a une petite anomalie sur client NFS. Si un dossier partagé est monté avant d’arrêter ou de redémarrer le client, alors la machine ne s’arrêtera pas. Il faut démonter les dossiers partagés avant. Voir ce sujet sur le forum pour la solution, qui utilise un script exécuté à l’arrêt pour démonter les dossiers partagés : lien forum
7. Demander de l'aide.
Si, malgré tout, votre partage NFS ne fonctionne toujours pas, vous pouvez demander de l'aide sur le forum, en suivant ces règles pour avoir de meilleures chances d'être secouru.
- Les IP du client et du serveur (précisez si elles sont fixes), le dossier à partager du serveur et le point de montage du client.
- Donnez en priorité le résultat des commandes qui aboutissent à des erreurs.
- Donnez également le contenu des fichiers /etc/exports, /etc/hosts.deny et /etc/hosts.allow de votre serveur, et le fichier /etc/fstab de votre client.
Et pour aller plus loin
Vous pouvez avoir envie de créer un partage NFS plus complexe :
- Par exemple décider que Serveur puisse aussi accéder aux fichiers de Client. Dans ce cas, il suffit de suivre ce même tuto en échangeant simplement les rôles .
Une mention particulière pour le tuto de Cep qui m'a servi de base pour mon premier partage NFS et donc aussi pour rédiger cette page.
Pour finir, deux pages bien documentées qui permettent de tout comprendre sur le partage avec NFS :