nfs - Documentation Ubuntu Francophone
1 sur 8
http://doc.ubuntu-fr.org/nfs
nfs Introduction Partage simple Côté serveur Côté client Serveur de fichier Côté serveur Côté client dapper, edgy, Feisty, Gutsy, reseau, brouillon à revoir (versions oboslètes + mise en forme)
NFS : Network File System Introduction NFS est l'acronyme de Network File System, c'est-à-dire un système de fichiers utilisable sur un réseau. NFS est utilisé pour partager des données entre systèmes UNIX. Si vous désirez partager des données avec d'autres systèmes, veuillez vous référer à la page traitant des partages de dossiers, de connexion et d'imprimante En tant qu'utilisateur, plusieurs raisons peuvent vous pousser à partager des fichiers. Étant donné que les besoins peuvent être différents, la suite de cette documentation s'articule autour de deux aspects : Si vous souhaitez simplement partager des données sur votre réseau local en configurant le mode graphique de Ubuntu, veuillez vous reportez à la section Partage simple. Si vous souhaitez monter un serveur de fichier destiné à fournir des données pour un réseau d'entreprise, veuillez vous reportez à la section Serveur de fichier.
Partage simple Le partage "simple" tel qu'il est présenté ci-dessous est un partage utilisant l'interface graphique fournie avec Ubuntu. Pour partager un dossier, suivez les étapes suivantes : Allez dans le menu Système → Administration → Dossiers partagés ou dans Réglage du système → Partage. Introduisez votre mot de passe. Si vous ouvrez le gestionnaire de partage pour la première fois (ou si vous n'avez pas installé le serveur NFS manuellement), Ubuntu vous indique qu'il est nécessaire d'installer les paquets de serveur pour continuer. Si les paquets ne sont pas installés, faites-le en cochant les cases appropriées et cliquez sur Appliquer. (Pour le faire manuellement: installez les paquets nfs-common nfs-kernel-server )
Dans le gestionnaire de partage se trouvent 3 boutons à droite pour gérer les partages : Ajouter qui permet de créer un nouveau partage. Propriétés qui permet de modifier les paramètres du partage sélectionné. Supprimer qui permet de supprimer le partage sélectionné.
22/04/2008 08:00
nfs - Documentation Ubuntu Francophone
2 sur 8
http://doc.ubuntu-fr.org/nfs
Pour ajouter un partage, cliquez sur Ajouter ; la fenêtre suivante s'affiche :
Dans cette fenêtre, vous choisissez le chemin du dossier à partager. Dans mon cas : /home/ols/Shared_Linux. Comme dans toute syntaxe *nix, certains caractères dans les noms de fichiers sont interdits, ce sont par exemple le /, les parenthèses (), l'espace ou *. Vous ne devez donc pas utiliser d'espaces dans le nom de vos dossiers (/home/moi/Mon Dossier) mais plutôt /home/moi/MonDossier Ensuite, vous choisissez le mode de partage. Ici, nous utiliserons NFS. En bas de l'écran, vous indiquez quels sont les hôtes autorisés à accéder à votre partage. Pour ajouter un hôte, cliquez sur Ajouter hôte. Dans la nouvelle fenêtre qui vient de s'ouvrir, vous pouvez choisir d'autoriser tous les hôtes de votre réseau, ou spécifier une adresse IP. Dans mon cas, je spécifie l'adresse IP (192.168.0.100) de mon ordinateur portable car je ne souhaite pas que les autres hôtes aient un accès en en lecture-écriture. Pour autoriser tout le réseau local, sélectionnez "Saisissez le nom du réseau", dans réseau mettez 192.168.0.0 et le masque de sous réseau 255.255.255.0 Cliquez sur Valider pour enregistrer cet hôte. Cliquez sur Valider pour sauvegarder les paramètres de partage. Cliquez sur Valider pour activer les dossiers partagés. Les dossiers sélectionnés sont maintenant partagés avec les permissions que vous leur avez octroyées. Si le serveur répond : permission denied , éditez le fichier /etc/exports sur le pc serveur, pour changez : /home/ols/Shared_Linux 192.168.0.100(rw)
en : /home/ols/Shared_Linux 192.168.0.100/255.255.255.0(rw)
Redémarrez enfin le daemon NFS : sudo /etc/init.d/nfs-kernel-server restart
Redémarrer le PC (et vérifier que le firewall comme FireStarter est correctement configuré) peut être nécessaire si vous faites encore face à ce message. A Savoir! qu'il n'est actuellement pas possible de partager des ressources sur une partition NTFS via NFS... Il faut commencer par installer le paquet nfs-common Pour se connecter à un partage NFS, vous devez définir un point de montage. Pour ce faire, suivez les instructions suivantes : Ouvrez un terminal Créez un dossier où le dossier partagé va être monté (dans mon cas) : sudo mkdir /media/nfs
N'hésitez pas à donner un nom plus parlant, surtout si vous avez plusieurs partages NFS.
22/04/2008 08:00
nfs - Documentation Ubuntu Francophone
3 sur 8
http://doc.ubuntu-fr.org/nfs
Mais n'oubliez surtout pas de changer aussi la suite en conséquence ! Ouvrez le fichier /etc/fstab Ajoutez une ligne comme celle-ci à la fin du fichier (dans mon cas) : 192.168.0.101:/home/ols/Shared_Linux /media/nfs nfs user,noauto 0 0
Explications: Les deux premiers champs sont à adapter en fonction de vos réglages. La première partie (192.168.0.101:/..../Shared_Linux) indique l'adresse IP du serveur suivie du dossier partagé. La seconde partie (/media/nfs) indique le point de montage que vous venez de créer plus haut. la suite: est commune à toutes les configurations. Vous pouvez tout de même enlever noauto dans la partie user pour que le dossier partagé soit monté automatiquement au démarrage. Sauvegardez le fichier. Allez maintenant dans le poste de travail (si vous n'avez pas enlevé ,noauto), dans le menu Raccourcis ⇒ Poste de travail. Vous y trouverez une icône nfs (ou autre suivant le point de montage que vous avez défini). Double-cliquez sur cet icône pour accéder au répertoire partagé sur l'autre machine. Si le répertoire partagé n'apparaît pas, lancer la commande suivante dans un terminal: sudo mount -a
Serveur de fichier Le partage de dossier sur un serveur de fichier avec NFS, tel que décrit ici, se fait en utilisant la ligne de commande et en se préoccupant des problèmes de droit d'accès. Installation Avant toutes choses, il est nécessaire d'installer le paquet nfs-kernel-server Configuration Ensuite, nous allons définir les dossiers à partager. Toutes les informations concernant le partage de dossier pour NFS se trouvent dans le fichier /etc/exports. Éditez le fichier /etc/exports Dans ce fichier, chaque ligne est définie comme ceci :
() ()...
Les informations se trouvant sur une ligne sont les suivantes : : chemin menant au dossier partagé. : indique quel est l'hôte qui peut accéder à ce partage, l'hôte peut être définit de plusieurs manières : une IP : on indique simplement l'adresse IP de la machine pouvant accéder à ce partage. un nom d'hôte : on indique le nom complet de l'hôte (pour peu qu'il soit connu du système au travers d'un DNS ou du fichier hosts).
22/04/2008 08:00
nfs - Documentation Ubuntu Francophone
4 sur 8
http://doc.ubuntu-fr.org/nfs
un nom de groupe réseau NIS (NIS netgroup) qui s'indique sous la forme @. un domaine avec un joker qui indique les machines d'un domaine ou sous-domaine; par exemple : *.ubuntu-fr.org. un intervalle d'IP avec le masque de sous-réseau; par exemple : 192.168.0.0/24 ou 192.168.0.* : indique les options de partage; nous n'allons pas parcourir toutes les options ensemble mais uniquement les plus importantes. rw : permet la lecture et l'écriture sur un partage pour l'hôte défini (par défaut, les partages sont en mode ro; c'est-à-dire en lecture seule). async : permet au serveur NFS de violer le protocole NFS et de répondre au requête avant que les changements effectués par la requête aient été appliqués sur l'unité de stockage. Cette option améliore les performances mais a un coût au niveau de l'intégrité des données (données corrompues ou perdues) en cas de redémarrage non-propre (par exemple en cas de crash système). sync : est le contraire de async. Le serveur NFS respecte le protocole NFS. root_squash : force le mapping de l'utilisateur root vers l'utilisateur anonyme (option par défaut). no_root_squash : n'effectue pas de mapping pour l'utilisateur root. all_squash : force le mapping de tous les utilisateurs vers l'utilisateur anonyme. anonuid : indique au serveur NFS l'UID de l'utilisateur anonyme (considéré comme tel dans les précédentes options de mapping). anongid : indique au serveur NFS le GID de l'utilisateur anonyme (considéré comme tel dans les précédentes options de mapping). Voyons quelques exemples... Nous souhaitons exporter un répertoire /srv/archive pour le réseau local (192.168.0.0/24) en lecture seule, en optimisant les performances (sur un répertoire en lecture seule, on peut se le permettre). Nous indiquons la ligne suivante dans le fichier /etc/exports : /srv/archive 192.168.0.0/24(ro,async)
Nous
souhaitons
exporter
un
répertoire
/srv/temp_add
pour
un
hôte
particulier
(lab05.ubuntu-fr.org) en lecture/écriture et tous les utilisateurs sont considérés comme l'utilisateur nfsshare (UID : 5000, GID : 5000). L'hôte lab02.ubuntu-fr.org peut également y accéder mais seulement en lecture seule. Nous indiquons la ligne suivante dans le fichier /etc/exports : /srv/temp_add lab05.ubuntu-fr.org(rw,all_squash,anonuid=5000,anongid=5000,sync) lab02.ubuntu-fr.org(ro,sync)
Vous obtiendrez tous les détails concernant les options NFS dans les manpages (man exports). Remarquez que, si vous n'utilisez pas all_squash, l'UID de l'utilisateur de la machine cliente sera utilisé sur la machine serveur. Ce qui signifie que, soit vous avez des fichiers /etc/passwd et /etc/group identiques (ce qui est encore possible dans un petit parc informatique), soit vous utilisez un serveur d'identité comme NIS afin d'avoir les mêmes UID/GID partout. Mise en route Ouvrez un terminal, Il ne vous reste plus qu'à démarrer votre nouveau serveur de fichier avec la commande :
22/04/2008 08:00
nfs - Documentation Ubuntu Francophone
5 sur 8
http://doc.ubuntu-fr.org/nfs
sudo /etc/init.d/nfs-kernel-server start
Lorsque vous modifiez le fichier de configuration, n'oubliez pas d'entrer la commande suivante pour le recharger : sudo /etc/init.d/nfs-kernel-server reload
Pour redémarrer le serveur NFS complètement, vous devez utiliser cette commande: sudo /etc/init.d/nfs-kernel-server restart
Considérations sécuritaires NFS n'est pas réputé pour être totalement sécurisé. Il est conseillé d'éviter de partager des informations avec NFS au travers de l'Internet. Pour sécuriser les accès, vous avez le choix entre plusieurs possibilités : Accès uniquement sur le réseau local Une première méthode consiste à modifier vos fichier /etc/hosts.deny et /etc/hosts.allow. Cette méthode simple est expliquée dans les manpages (man hosts_access). Une seconde méthode (ma favorite) consiste à configurer un firewall avec iptables pour éviter les accès non-autorisés. Je préfère cette solution car elle permet de traiter tous les services et accès (y compris ping, suivi de connexions, etc.). Les ports utilisés par NFS sont le 111 et le 2049 (en udp et tcp). Accès externes Le mieux est d'utiliser un tunnel VPN, crypté et sécurisé, qui fera de votre machine distante une machine de votre réseau local. Il faut commencer par installer le paquet nfs-common sudo apt-get install nfs-common
Pour les connexions clientes sur des machines de bureau, vous pouvez utiliser la méthode décrite dans la section précédente. Si vous devez effectuer des liens NFS entre différents serveurs, voici quelques précisions concernant les montages NFS. Pour monter un partage NFS, vous avez besoin d'un répertoire vide qui servira de point de montage. En général (et de préférence), les points de montage se trouvent dans /media, mais ces points de montage peuvent se trouver n'importe où dans votre arborescence root (/). Pour monter un système de fichier NFS manuellement, vous utiliserez la commande suivante : sudo mount -t nfs :
Ce qui donne par exemple : sudo mount -t nfs 192.168.0.40:/home/brol /media/nfs
22/04/2008 08:00
nfs - Documentation Ubuntu Francophone
6 sur 8
http://doc.ubuntu-fr.org/nfs
Certaines options peuvent être passées à la commande mount lors du montage. Les options les plus intéressantes sont les suivantes : ro : monte le système de fichier en lecture seule. rw : monte le système de fichier en lecture/écriture. hard : si le serveur n'est pas accessible, le noyau place les processus en attente de la ressource en attente. soft : si le serveur est inaccessible, on attend le timeout avant de générer une erreur de lecture/écriture aux processus impactés. timeo=XXX : indique le timeout (en mode soft) en secondes (maximum = 60sec). Ces options se passent via l'argument -o de la commande mount; par exemple : sudo mount -t nfs -o ro,soft,timeo=10 192.168.0.40:/home/brol /media/nfs
Pour démonter le système de fichier, vous pouvez utilisez la commande suivante : sudo umount
Pour monter le serveur de fichier au démarrage de la machine, vous pouvez ajouter une ligne ressemblant à celle-ci dans le fichier /etc/fstab : : nfs 0 0
Par exemple : 192.168.0.40:/home/brol /media/nfs nfs ro 0 0
Autofs Objectifs
Le montage manuel ou par fstab a plusieurs inconvénients. Le principal, c'est qu'il n'est pas toujours possible de rendre le montage automatique. Pourtant, si vous ne spécifiez pas "noauto" dans les options de montage dans /etc/fstab, il est sensé être automatique. Mais si lors du montage vous n'êtes pas encore connecté (en wifi par exemple), et bien le montage ne se fait pas, et il faut effectuer le montage manuellement. Et dans tous les cas, le démontage aussi. Un autre inconvénient, moins important, est que même si vous n'utilisez pas les dossiers montés, ils restent montés et consomment des ressources. autofs permet de résoudre ces 2 problèmes. Installation
Pour l'installer: sudo apt-get install autofs
apt://autofs
22/04/2008 08:00
nfs - Documentation Ubuntu Francophone
7 sur 8
http://doc.ubuntu-fr.org/nfs
Configuration
Tout d'abord, supprimez (ou commentez) dans /etc/fstab les montages que vous voulez gérer par autofs (si vous en aviez écrit auparavant). Ensuite, éditez /etc/auto.master, pour y ajouter la ligne : /net /etc/auto.nfs --ghost,--timeout=30
L'option ghost permet de toujours afficher les dossiers, mêmes lorsqu'ils ne sont pas montés. Il ne reste plus qu'à double-cliquer dessus dans le navigateur pour les monter automatiquement. Créez alors un fichier /etc/auto.nfs : mondossier -soft,rw,intr 192.168.0.1:/media/share
Le montage se fera alors dans /net/mondossier, et pointera vers la machine 192.168.0.1 sur le répertoire /media/share. Vous pouvez dans ce même fichier écrire plusieurs lignes pour chacun de vos points de montages. Il ne reste plus qu'à lancer le serveur : sudo /etc/init.d/autofs start
Erreurs Le message classique en cas d'erreur au moment du mount du coté client est mount RPC : le programme n'est pas enregistré
Cela ne signifie pas qu'il y a une erreur du coté client. Cela peut-être dû (coté serveur) à une mauvaise définition du client autorisé à se connecter comme défini dans le fichier /etc/exports. Vérifier que l'hôte-client est correctement identifié. En cas de doute remplacer le nom d'un client par son Ip. Cela peut-être (toujours du coté serveur) dû à une restriction sur les hôtes-clients dans /etc/hosts.deny (qui indique quel programme doit refuser quel hote) qui n'est pas contrebalancée par une permission dans /etc/hosts.allow (qui indique quel client à néanmoins le droit d'outrepasser les interdictions du hosts.deny) Pour plus de lisibilité utiliser de manière préférentielle les Ip de vos clients. Soit une par une (petit nombre) ou à l'aide du couple Adresse/Masque (grand nombre) Un exemple de configuration des fichiers hosts.allow et hosts.deny est donnée ici : SUR LE SERVEUR SEULEMENT il faut ajouter les lignes suivantes (minimum vital): Fichier hosts.deny #Interdire tout le monde sur les services portmap, nfsd et mountd portmap:ALL nfsd:ALL mountd:ALL Fichier hosts.allow #Accepter néanmoins les sur les services portmap, nfsd et moundt #Exemple de 192.168.0.50 , une seule machine. #Autre exemple 192.168.0.0/255.255.255.0 , toutes les machines de 192.168.0.1 à 192.168.0.254 portmap: nfsd: mountd:
Ensuite il ne reste plus qu'à recharger les configs pour le démon nfs : sudo /etc/init.d/nfs-kernel-server reload
22/04/2008 08:00
nfs - Documentation Ubuntu Francophone
8 sur 8
http://doc.ubuntu-fr.org/nfs
Autre erreur : Accés refusé.
Vérifiez que tous les services nécessaires sont démarrés (coté serveur) grâce à la commande rpcinfo -p
Vous devez obtenir une liste qui comprend au moins un exemplaire de chacun de ces services : tcp 111 portmapper udp 942 status udp 752 mountd udp 2049 nfs udp 32799 nlockmgr
Si ce n'est pas le cas, relancer le script de démarrage (start) de nfs comme expliqué plus haut. Pour plus d'informations concernant les options de montage, vous pouvez consulter les manpages de NFS (man nfs).
Contributeurs : ostaquet, Fabien26. nfs.txt Dernière modification: Le 12/04/2008, à 22:22 par Topazz Le contenu de ce wiki est sous double licence : CC BY-SA et GNU FDL
22/04/2008 08:00