Installer et configurer un serveur NFS
Historique
02 juin 2013 : Reprise de la page de l'ancien site de Païou et actualisation.
Difficulté
Pour : utilisateur un peu curieux.
Introduction
Le système de fichiers en réseau (Network File System) est un protocole qui permet à un ordinateur d'accéder à des fichiers situés sur d'autres ordinateurs à travers un réseau.
Le serveur (l'ordinateur distant) exporte des répertoires et des fichiers, alors que le client (l'ordinateur local) monte ceux-ci dans sa propre arborescence.
L'utilisateur les voit comme s'ils étaient sur son ordinateur.
Les applications sont multiples :
- travail collaboratif sur des mêmes documents
- centralisation de documents sur un serveur de fichiers
- stockages des sauvegardes d'un ordinateur sur un autre ordinateur du réseau
- installation des nouveaux ordinateurs à partir d'un serveur local
- ...
Le partage de fichier en réseau est un système avec plein de finesses.
Avant de vous lancer dans la configuration, prenez le temps de lire la page Bases de NFS et de réfléchir aux options que vous devez choisir dans votre cas.
Installation du serveur
L'installation et la configuration se font à l'aide du CCM (Centre de Contrôle Mageia).
Ouverture du Centre de contrôle
Pour accéder au CCM :
- Ouvrez le menu Mageia/Outils/Outils système/Configurer votre ordinateurLe mot de passe root vous sera demandé.
- Dans la partie gauche de la fenêtre, vous pourrez accéder aux différentes rubriques du centre de contrôle.
Gestionnaire de paquetages
Configurez le gestionnaire de paquetages
- Cliquez sur l'onglet : Gestionnaire des logiciels, puis sur l'icône : Installer et désinstaller des logiciels
- Vérifiez que la fenêtre déroulante de gauche affiche bien Tous. Modifiez au besoin.
Installation
Vérifiez si le paquetage du serveur est installé. Sinon, installez-le :
- Dans le champ "Rechercher", tapez nfset voyez si nfs-utils est installé.
Si nécessaire, Préparez vos média d'installation (CDs, DVD, liaison réseau ...) et installez les paquetages.
- Vous pouvez fermer la fenêtre d'installation des logiciels, mais pas le CCM.
Configuration du serveur
Pour que votre partage NFS fonctionne correctement, sa configuration doit correspondre à vos besoins.
Vous pouvez exporter plusieurs répertoires, par exemple si vous avez plusieurs utilisateurs qui doivent pouvoir accéder chacun à son (ses) répertoire(s). Dans ce cas, vous ferez la configuration pour chacun des répertoires à exporter.
Un peu de théorie
La configuration peut se faire par l'intermédiaire du Centre de contrôle que vous avez laissé en attente ou en éditant un fichier de configuration.
Mais il faut savoir quoi configurer.
- le répertoire à exporter, avec le chemin d'accès complet,
- quels ordinateurs peuvent y accéder :
- tous = *
- tout le réseau local = 192.168.0.0/24 ou 192.168.0.0/255.255.255.0, par exemple,
- rien qu'un ordinateur = son adresse IP (192.168.0.2) ou son nom abrégé (s'il est connu) ou son nom complet
- un groupe d'ordinateurs = leur nom avec des caractères jocker (tux* pour tux, tuxie, tuxette ...)
- avec quelle association d'identifiant
(vous avez lu le paragraphe Accès des utilisateurs de la page Bases de NFS)
les identifiants peuvent être transformés en identifiants d'un utilisateur nommé nobody et qui n'a que des droits très limités (ceux du reste du monde)
- pour les utilisateurs normaux
- no_all_squash : C'est l'option utilisée par défaut, il n'est donc pas nécessaire de l'indiquer. Les utilisateurs ordinaires conservent leur identifiant. Intérêt : chaque utilisateur n'accède qu'à ses documents et à ceux auxquels il est autorisé. Il faut cependant que les UID et GID soient identiques sur les deux machines
- all_squash : Les requêtes de tous les utilisateurs sont transformées en requêtes de l'utilisateur anonyme (nobody). Intérêt : les clients ne peuvent rien modifier. Ceci est conseillé pour un serveur public.
- pour le superutilisateur
- root_squash : C'est l'option utilisée par défaut, il n'est donc pas nécessaire de l'indiquer. Les requêtes du superutilisateur sont transformées en requêtes de l'utilisateur anonyme, donc avec des droits très réduits. Intérêt : un superutilisateur distant ne peut pas utiliser ses droits étendus sur le serveur. Cette option est fortement recommandée et indispensable pour un serveur public.
- no_root_squash : Le superutilisateur garde tous ses droits. Intérêt : Elle est utile pour les stations sans disque.
- éventuellement comment : sync ou async
Les spécifications de NFS disent qu'une requête d'écriture de NFS doit être terminée (lorsque les données sont effectivement écrites sur le disque) avant de procéder à une nouvelle requête. Ceci réduit les performances à l'écriture, mais augmente le sécurité (en cas de redémarrage brutal d'un serveur après plantage par exemple). Il s'agit de l'accès synchrone et c'est le comportement par défaut.
- éventuellement, secure ou unsecure
L'option sécurisée réclame que les requêtes proviennent d'un port de numéro inférieur à 1024. Elle est en service par défaut.
- éventuellement, avec quels droits : ro = lecture seule (par défaut) ou rw = lecture/écriture doivent être spécifiées.
- éventuellement, avec contrôle des sous-répertoires : subtree_check ou no_subtree_check
Généralement, pour un répertoire personnel, vous n'utiliserez pas le contrôle des sous-répertoires.
Vous pouvez configurer plusieurs exports différents. Il faudra les configurer individuellement.
Avec le Centre de Contrôle Mageia
-
Cliquez sur la rubrique Partages réseau
- Cliquez sur l'icône Partager des disques et des répertoires
- Dans la fenêtre suivante, cliquez sur le bouton Ajouter
Renseignez les différents champs
- le répertoire à partager
- quels ordinateurs peuvent y accéder
- quel transfert d'identifiant
- L'option Avancé permet de préciser les autres paramètres, si les valeurs par défaut ne conviennent pas.
-
Après avoir validé, vous pourrez voir le répertoire exporté dans la liste
En éditant le fichier de configuration /etc/exports
Cela se fait en étant superutilisateur. Cette procédure permet des configurations plus fines.
C'est le fichier /etc/exports qui définit les conditions du partage de fichiers avec NFS. Chaque ligne de ce fichier définit un partage.
Pour les curieux, survolez :
Le fichier de configuration /etc/exports
Voici un exemple de ligne, autorisant deux machines bien définies à accéder à un répertoire :
/home/toto/Documents 192.168.0.2(all_squash,ro) 192.168.0.3(root_squash,rw)
Syntaxe des lignes de ce fichier. Chaque ligne définit :
- le nom complet du répertoire : /home/toto/Documents
- quelle(s) machine(s) peu(ven)t y accéder : 192.168.0.2 et 192.168.0.3
- les options d'accès pour chaque machine : (all_squash,ro) et (root_squash,rw)
Les options se placent immédiatement après le nom du client, sans espace et entre parenthèses.
Vous pouvez également trouver un fichier /etc/nfsmount.conf qui vous permet notamment de définir la version NFS par défaut et même d'imposer une version donnée à laquelle répondra le serveur.
Configuration du pare-feu
Si le poste qui est serveur NFS possède un pare-feu, vous devrez configurer l'ouverture des ports adéquats.
Avant de configurer le pare-feu, il est important de lire ces trois remarques.
Démons (services) installés et ports écoutés
En installant le paquetage nfs-utils et ses dépendances, ceux-ci installent et lancent tous les programmes nécessaires à NFS versions 2, 3 et 4 et ceux-ci écoutent les ports correspondants :
Chaque ligne donne : nom du programme = port écouté
- rpcbind = (anciennement portmapper) = 111 tcp/udp
- rpc.nfsd = 2049 tcp/udp
- rpc.lockd = 4002 tcp/udp
- rpc.mountd = port aléatoire tcp/udp
- rpc.rquotad = port aléatoire tcp/udp
- rpc.statd = port aléatoire tcp/udp
3 services utilisent des ports aléatoires, donc difficiles à gérer par le pare-feu.
Ports ouverts par le pare-feu
En configurant le pare-feu avec MCC vous pouvez cocher la ligne serveur NFS. Ceci ouvre les ports suivants :
111/tcp, 111/udp, 2049/tcp, 2049/udp, 4001/tcp, 4001/udp, 4002/tcp, 4002/udp, 4003/tcp, 4003/udp, 4004/tcp et 4004/udp.
Avec NFSv4, seul le port 2049 est nécessaire. Des ports sont ouverts inutilement.
Avec NFSv2 et NFSv3, 2049 et 4002 correspondent bien à des ports utilisé, mais 4001, 4003 et 4004 ne correspondent à rien, par contre, 3 démons utilisent des ports aléatoires.
Bogue de la configuration du pare-feu
Astuce : une bogue affecte actuellement Mageia3, empêchant toute configuration du pare-feu.
Pour contourner le problème, désinstaller d'abord shorewall-ipv6. Il sera réinstallé plus tard, pendant la configuration du pare-feu, mais cette opération permet la configuration du pare-feu !
Si vos clients utilisent uniquement NFSv4
Configuration du pare-feu
Avec Mageia, cette opération se fait facilement avec le Centre de Contrôle.
Voici la procédure de configuration du pare-feu :
- Normalement le Centre de Contrôle Mageia est encore ouvert, sinon :Mageia/Outils/Outils système/Configurer votre ordinateur
- Onglet : Sécurité, Icône : Configurer votre pare-feu personnel
- Si vous voulez limiter à NFS version 4, utilisez la configuration avancée et le texte 2049/tcp
- Validez, puis indiquez quels services doivent vous envoyer une notification d'accès.
- Validez encore, puis fermez le Centre de Contrôle.
Si vos clients utilisent également NFSv2 ou NFSv3
Configuration correcte des ports
En superutilisateur éditez, comme suit, les 3 lignes du fichier /etc/sysconfig/nfs :
RPCQUOTADARGS="-p 4001"
RPCMOUNTDARGS="-p 4003"
STATDARGS="-p 4004"
Redémarrez les services (CCM, Système Gérer les services)
Configuration du pare-feu
Avec Mageia, cette opération se fait facilement avec le Centre de Contrôle.
Voici la procédure de configuration du pare-feu :
- Normalement le Centre de Contrôle Mageia est encore ouvert, sinon :*/Outils/Outils système/Configurer votre ordinateur
- Onglet : Sécurité, Icône : Configurer votre pare-feu personnel
- La ligne Serveur NFS ouvre les ports de NFS version 2, 3 et 4
- Validez, puis indiquez quels services doivent vous envoyer une notification d'accès.
- Validez encore, puis fermez le Centre de Contrôle.