Installation d'un partage NFS entre deux micros
Le 16-07-2006
NFS
(Network File System) est, comme son nom l'indique, un système de fichier
pour le réseau destiné au partage de fichiers entre plateformes UNIX/Linux.
L'objectif n'est pas de transformer un des ordinateurs en serveur exclusif,
mais bien d'obtenir sur chaque ordinateur un répertoire partageable accessible
depuis l'autre poste. Sans Gnome
, ni KDE
.
Au départ, c'était pour transférer toutes mes données d'un poste sur le nouveau ; puis en installant le nouveau, je téléchargeais finalement pas mal de fichiers que je voulais remettre sur l'ancien, d'où ce besoin de navette entre les deux. Et cela me permet éventuellement de ne pas toujours mettre en route les deux micros quand je ne travaille que sur un seul.
1 - Programmes nécessaires
tcp_wrappers
: un système basique pour prévenir (ou explicitement autoriser) les accès aux services depuis des hôtes précis. Installé avec la Slackware par le paquetagetcpip-0.17
, lequel est incontournable.nfs-utils-1.0.7
: ce paquetage contient les démons et utilitaires nécessaires pour faire tourner le serveurNF
S.portmap-5.0
: indispensable aussi
Sans environnement Gnome, ni KDE, bien sûr. Sinon, se reporter à leur propres docs.
2 - Installation des programmes
Pas de problèmes particuliers, ils existent en paquetages d'origine dans
le répertoire "n"
de la Slackware.
Sur le poste serveur, il faut installer nfs-utils
et portmap
.
Sur les autres postes, il faut installer portmap
.
Le principe étant d'avoir un répertoire partageable sur chaque ordinateur, chacun des postes est un serveur pour l'autre.
3 - Configuration
Sur le serveur uniquement
le fichier /etc/exports
Toutes les informations concernant le partage de dossier pour NFS
se trouvent
dans ce fichier.
Chaque ligne définit un répertoire partagé comme ceci :
dossier_partagé hôte1(options) hôte2(options)...
- dossier_partagé :
- chemin du dossier partagé.
- hôte :
- l'hôte qui peut accéder à ce partage,
l'hôte peut être défini de plusieurs manières.
- une adresse
IP
. - un nom d'hôte : on indique le nom complet de l'hôte (il faut qu'il soit inscrit
dans le fichier
/etc/hosts
). - un nom de domaine avec un joker qui indique toutes les machines d'un domaine,
par exemple :
*.mondomaine.fr
- un intervalle d'
IP
avec son masque de sous-réseau ; par exemple :192.168.0.0/24
.
- une adresse
- options :
- indique les options de partage ; voici 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 modero
; c'est-à-dire en lecture seule).async
: permet au serveurNFS
de violer le protocoleNFS
. Cette option améliore les performances mais comporte un risque pour l'intégrité des données en cas de crash.sync
: est le contraire deasync
. Le serveurNFS
respecte le protocoleNFS
.root_squash
: force l'identité de l'utilisateur root vers l'utilisateur anonyme (option par défaut).no_root_squash
: n'effectue pas de transfert d'identité pour l'utilisateur root.all_squash
: force l'identité de tous les utilisateurs vers l'utilisateur anonyme.anonuid
,anongid
: indique au serveurNFS
l'UID
et leGID
utilisé pour l'utilisateur anonyme (nobody).
Donc si l'on veut permettre que tous les utilisateurs deviennent
un utilisateur anonyme avec un UID/GID
5000 pour le répertoire partagé qui s'appelle
originalement /home/partages
:
# See exports(5) for a description. # This file contains a list of all directories exported # to other computers. # It is used by rpc.nfsd and rpc.mountd. /home/partages 192.168.0.50(rw,all_squash,anonuid=5000,anongid=5000,sync)
Mais si c'est seulement pour toto, il faut que toto ait les mêmes uid
et gid
sur les deux micros et on a alors :
# See exports(5) for a description. # This file contains a list of all directories # exported to other computers. # It is used by rpc.nfsd and rpc.mountd. /home/toto/partages 192.168.0.50(rw,sync)
Attention, pas d'espace entre l'IP
et les options !
Le fichier /etc/hosts.deny
indique à quelles machines et à quels programmes, on interdit l'accès.
# hosts.deny This file describes the names of the hosts # which are *not* allowed to use the local INET services, # as decided by the '/usr/sbin/tcpd' server. # # Version: @(#)/etc/hosts.deny 1.00 05/28/93 # Author: Fred N. van Kempen, waltje@uwalt.nl.mugnet.org # ALL:ALL # End of hosts.deny.
Là, on interdit tous les programmes à toutes les machines.
Le fichier /etc/hosts.allow
indique quelles machines ont accès à quels programmes.
# hosts.allow This file describes the names of the hosts which are # allowed to use the local INET services, as decided by # the '/usr/sbin/tcpd' server. # # Version: @(#)/etc/hosts.allow 1.00 05/28/93 # Author: Fred N. van Kempen, waltje@uwalt.nl.mugnet.org # ALL:192.168.0.50 # End of hosts.allow
On autorise tout à la machine d'IP indiquée ou alors pour plus de précision, on indique les programmes autorisés pour ce micro :
portmap:192.168.0.50 lockd:192.168.0.50 mountd:192.168.0.50 statd:192.168.0.50 # End of hosts.allow.
Pour un échange symétrique, ce paramétrage est à faire sur les deux micros.
4 - Utilisation des répertoires partageables
Pour que le système monte automatiquement ces répertoires, inclure
dans le fichier /etc/fstab
de machine2 :
machine1:/home/toto/partages /mnt/partages nfs hard,intr,user 0 0
... où machine1
représente le nom de l'autre machine, sur laquelle on partage
le répertoire /home/toto/partages
que l'on monte dans le répertoire
/mnt/partages
(par exemple) de machine2.
Les options hard
et intr
permettent de ne pas attendre
indefiniment au boot du premier micro (qui n'a pas d'accès à l'autre pas encore
en route).
Extrait du NFS Howto :
hard Le programme accédant à un fichier sur un système monté par NFS sera suspendu si le serveur se plante. Le processus ne pas être interrompu ou tué sauf si on spécifie aussi l'option intr.
L'option user
pour permettre à l'utilisateur non
root de monter, si nécessaire, le répertoire /mnt/partages
.
Ce qui s'avère indispensable sur la machine mise en route en premier.
5 - Liens utiles
- nfs-howto
NFS-HOWTO.html
, plus ancien mais en français- Doc Ubuntu
- Page man de
Exports