Ceci est une ancienne révision du document !
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
1. Deux ordinateurs fonctionnant avec linux.
Serveur sur lequel se trouvent les fichiers à partager, et Client qui doit pouvoir accéder aux fichiers de Serveur.
2. Avoir les droits d'administration sur les deux machines.
3. Ne pas avoir peur du terminal.
4. Connaître les adresses IP locales de Serveur et de Client.
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 .
5. 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 |
6. Installer NFS
Installer les paquets :
- 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 éditer 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.
Pour ne donner l'accès qu'en lecture seule, il suffit de supprimer l'option rw de /etc/exports
- En créant un répertoire /home/agora et en y enregistrant les fichiers à partager.
- 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.
En effet, si Client tentait de monter cette partition au démarrage et qu'il échouait (par exemple parce que sa connexion ne serait pas encore active) cela pourrait planter complètement l'ouverture de session.
C'est pourquoi nous détaillerons dans un prochain chapitre comment automatiser le montage seulement à l'ouverture de la session lorsque tous les services nécessaires sont actifs.
Ajouter cette ligne au fichier /etc/fstab de Client :
192.168.1.1:/Fichiers_à_partager_sur_Serveur /Point_de_montage_sur_Client nfs user,noauto 0 0
Étape 3 - Serveur règle la sécurité du partage
1. D'abord interdire tout :
Sur Serveur donc, éditer ou créer le fichier /etc/hosts.deny, et y copier ces lignes :
# Tout interdire sur portmap, nfsd et mountd portmap:ALL nfsd:ALL mountd:ALL
2. Ensuite autoriser les échanges voulus :
Toujours sur Serveur, éditer ou créer le fichier /etc/hosts.allow, et enregistrer ces lignes (en adaptant bien sûr les IP) :
#Autoriser ce client à se connecter aux services (essentiellement : portmap, nfsd et moundt) : 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 cette syntaxe :
192.168.
qui autorise toutes les machines dont l'IP locale commence par 192.168. à se connecter.
É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
Vous pouvez adapter la valeur.
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.
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'erreur) ?
- Ai-je bien mis tous les points des adresses IP ?
- N'ai-je pas échangé un 0 pour un 1 dans cette IP là ?
- Il ne manque pas un espace ici ?
2. Relancer le serveur NFS de Serveur.
À faire sur Serveur
sudo /etc/init.d/nfs-kernel-server restart
Si vous obtenez une erreur faites une recherche avec le message sur le forum Ubuntu.
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.1
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.
Et ici de l'aide pour configurer sa *box.
6. 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 .
Ou bien faire un partage symétrique entre trois machines linux.
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 :
Contributeurs : Missoire