ubuntu: nfs
Introduction au service NFS
Le service
permet le partage d'un système de fichiers sur un réseau Linux
NFS (Network File System),permet le partage d'un système de fichiers sur un réseau Linux
Généralités
- Il s'agit du protocole standard de partage réseau entre machines Unix, créé par SUN vers 1980.
Il comprend l'ajout de fonctionnalités supplémentaires (dans la couche session au dessus de TCP/IP), lesRPC=(Remote Procedure Calls) - Donc une machine joue le rôle de serveur de fichiers. Elle est appelée
serveur NFS, et- on dit qu'elle exporte tout (arborescence racine /) ou partie de son système de fichiers,
- en le partageant par une liste de stations accessibles par réseau,
- en installant toutefois des restrictions d'accès.
- Comme toute ressource extérieure doit être intégrée dans le système de fichiers Linux, cet accès ne pourra être permis qu'à l'aide d'un processus de montage : une partie de l'arborescence d'une machine Linux "serveur", est exportée ce qui lui permet d'être intégré dans le système de fichiers d'une machine Linux "cliente".
- L'utilisateur peut monter cette arborescence exportée par le serveur, sur un point de montage, de façon tout-à-fait semblable au montage de systèmes de fichiers des divers périphériques.
Le montage peut s'effectuer en cours de session de travail par la commande interactivemount. - Mais dans un cadre de travail stable, où le serveur est dédié, il est souhaitable de monter la ressources
NFSau démarrage.
Il suffit pour cela d'inclure la description du montage sur une ligne de /etc/fstab. On peut comparer le processus à la "connexion à un lecteur réseau" sur d'autres systèmes. - Dès lors, pour l'utilisateur sur la machine cliente, la ressource est accessible comme si elle résidait sur un périphérique local.
Installation
Sur le serveur NFS
- Tout d'abord, les services
portmapqui gère les connexions RPC, etnfsont dû être installés initialement. (sur une distribution Mdke 7.2, il s'agit des packages portmap-4.0 .. et nfs-utils - Vérifier avec l'utilitaire
ntsysvque les servicesportmapetnfssont bien activés automatiquement au démarrage.
pour lister les services sous ubuntu il faut taper la commande service --status-all
- Pour vérifier que les processus correspondant sont bien en exécution :
ps aux | grep portmap
- NFS, comme les autres services, se gère avec un script placé dans /etc/rc.d/init.d/.
Voici pour lancer NFS (sur une distribution de type RedHat)# service portmap start Starting portmapper: [OK] # service nfs start Starting NFS services: [OK] Starting NFS quotas: [OK] Starting NFS deamon: [OK] Starting NFS mountd: [OK]
- Le fichier /etc/exports.
Ce fichier (à créer s'il est absent) contient la liste des exportations.
Sur chaque ligne, on précise un répertoire du système de fichiers, suivi par la liste des machines distantes clientes autorisées à les monter. Si cette liste est vide, toutes les stations accessibles sont autorisées.
Exemples d'exportation déclarées dans le fichier /etc/exportssur le serveur p00# repertoire liste-machines (liste-options) /home/jean pc2(ro) pc3(rw) /usr/bin pc2(ro) pc3(ro) /var/www/html *.fctice.ac-creteil.fr (ro) pc3 (rw) /usr/share/doc (ro)
Pour valider un changement opéré dans ce fichier de configuration, faire appel à la commande :# exportfs -a
Sur la station cliente
- On crée un rép. de montage, situé pour des tests, dans /mnt, par exemple sur la machine
pc3:
[root@pc3 /]#mkdir /mnt/nfs - Puis on effectue le montage, sur le point de montage précédent, de la ressource
/var/www/html(qui a été exportée parp00[root@pc3 /]#mount -t nfs p00:/home/httpd/html /mnt/nfsL'utilisateur sur pc3 pourra alors mettre à jour le site WEB distant surp00 - Syntaxe générale
mount -t nfs nom-machine:arborescence point-montage - Respects par nfs des droits
Bien sûr les permissions des fichiers importés s'appliquent vis à vis de l'utilisateur, notamment en ce qui concerne la directive(rw). On ne pourra mettre à jour sur la station cliente, un fichier exporté que s'il posséde la permission w vis-à-vis de l'utilisateur. - Automatisation du montage
Pour cela, il suffit d'ajouter le contenu de la commande précédente dans une ligne du fichier /etc/fstab - Autres paramètres de montage
insecureautorise les accès non authentifiés
rsize=8192 et wsize=8192 augmente le débit de nFS ? intr interrompt une requete NFS en cas de serveur indisponible, permet d'éviter un blocage
Exemple de mise en oeuvre
- Ce que veut avant tout un utilisateur, c'est pouvoir travailler dans son répertoire personnel situé sur du serveur, à partir d'une station Linux quelconque.
- Il doit se connecter et s'authentifier sur le serveur NIS qui tient à jour la base de données des comptes utilisateurs
- Sur le client pc1 on monte la ressource
/homeexportée sur le serveur sur/homelocal, au démarrage ou bien enroot.
Ce montage ca masquer les comptes éventuellement présents sur le client
# mount -t nfs serveur:/home /home - Dès lors, l'utilisateur jean accède à ses fichiers par :
[jean@pc1 ] cd /home/jean
Problèmes rencontrés
- "Je relance le "démon" nfs par l'exécution du script
/etc/rc.d/init.d/nfs start, et ... pas de message, rien ne focntionne !
Cela est du à la ligne[ -s /etc/exports ] || exit 0(-s = le fichier n'est pas vide)
Donc pas de fonctionnement inutile denfss'il n'y a aucune ressource à exporter ! - "J'ai bien déclaré les exportations sur le serveur. Pourtant quand je monte correctement une ressource sur une station, avec la commande
mount -f nfs serveur:/ressource /point-de-montage, je constate un blocage ..."
S'il n'y a pas d'erreur dans le nom de la ressource, c'est sans doute que le nom du serveur n'est pas trouvé par requête DNS, NIS ou en consultant tout simplement le fichier/etc/hosts...
Configuration avec
Linuxconf Soit à configurer l'export : du serveur p00 ---> stations clientes p02, p03
Pour chaque rép à exporter, on précise la liste des clients :
/home p02, p03 r
/usr/bin p02, p03 r
/home/httpd p03 rw
/usr/public p03 rw
Après validation, on peut vérifier que la table suivante a été écrite dans le fichier /etc/exports
/home p02(ro), p03(ro)
/usr/bin p02(ro), p03(ro)
/home/httpd p03(rw)
/usr/public p03(rw)
Publicité