Retour

Partage de fichiers entre machines sous Linux avec NFS 



Configuration du Network Files System entre machines tournant sous Ubuntu ou Debain Etch.

Procédure et explications réalisées et testées avec la complicité et l'aide de Jrev.

NFS = network file system est un protocole de partage de fichiers entre machines Linux. La machine ayant le rôle de serveur de fichiers partage tout ou partie de son système vers des pc clients auxquels auront été attribués des droits de partage. La machine client monte et utilise le système de fichiers de la même façon que s'il était sur l'un de ses périphériques.

Nous configurerons d'abord la machine faisant office de serveur, puis l'un des clients. Une machine "desktop" peut aussi être serveur de fichiers.

1°/ Sur le serveur :

a/ Installation des paquets nécessaires :

Il faut commencer par installer les paquets nécessaires, comme nfs-kernel-server. Aptitude ajoutera automatiquement les autres paquets utiles :

sudo aptitude install nfs-kernel-server

Si nécessaire, et suivant la version de votre distribution, les nouveaux paquets suivants vont être automatiquement installés : libevent1, libnfsidmap1, nfs-common et portmap. Au moment de l'installation sous dapper, dans la configuration de portmap, la question va être posée :
Portmap doit-il se limiter à l'adresse de bouclage 127.0.0.1 ?     Répondre  Non.

On édite la configuration de portmap pour voir comment il se présente :

$ cat /etc/default/portmap
# Portmap configuration file
OPTIONS=""

On voit donc que tout est autorisé. Si ce n'était pas le cas, supprimer ce qui serait inscrit entre les guillements après OPTIONS=

b/ Configurons les répertoires à partager et les options :

Dans notre exemple, on va partager le répertoire /home/cep/dest/ et il sera accessible depuis toutes les IP commençant par 192.168.1.  La configuration sera à préciser dans le fichier /etc/exports

Pour éditer ce fichier /etc/exports :  sudo nano -w -B -m /etc/exports  et on ajoute sur une seule ligne :

# Dossier partagé
/home/cep/dest 192.168.1.1/255.255.252.0(rw,all_squash,anonuid=1000,anongid=1000,sync)

( À noter que l'option - B de nano permet de faire une copie du fichier original avant modification. La copie portera l'extension ~. De même l'option -m permet d'utiliser la souris dans nano, et on pourra enrégistrer le fichier en cliquant sur le bouton Enrégistrer au lieu d'utiliser les touches ctrl + O ).

Cette ligne de configuration dans /etc/exports va autoriser toutes les IP commençant depuis 192.168.1.1 à avoir un acces en lecture et écriture au réperoire /home/cep/dest/ et avec l'option all_squash, anonuid et anongid, c'est comme s'ils utilisaient l'id et gid 1000, qui est celle du propriétaire de /home/cep/dest. Il faudra adapter si l'on veux partager le répertoire d'un user dont l'id est différente. L'option all_squash évite d'avoir à configurer passwd et compagnie sur le serveur. Voir man exports pour les détails et autres options possibles. 

On aurait aussi pu mettre : /home/cep/dest 192.168.1.1/24(ro,async) pour un acces en lecture seulement pour les IP de 192.168.1.1 à 24.

c / Configurons les autorisations dans hosts.allow et hosts.deny :

On a vu que portmap autorise tout. Il faut donc impérativement limiter un minimum. Pour cela on va tout interdire dans hosts.deny et autoriser dans hosts.allow :

sudo nano -w -B -m /etc/hosts.deny

et dans le fichier on ajoute :

# Tout interdire sur  portmap, nfsd et mountd
# les autoriser par hosts.allow
portmap:ALL
nfsd:ALL
mountd:ALL     

On s'occupe ensuite de hosts.allow :

sudo nano -w -B -m /etc/hosts.allow

et on ajoute : 

#Autoriser ces clienst à se connecter avec services portmap, nfsd, moundt
portmap:192.168.
nfsd:192.168.
mountd:192.168.

Inutile d'ajouter autre chose et de préciser les IP complètes. L'IP sous la forme 192.168. (avec le . ) suffit. Voir man hosts.allow.

Comme c'est terminé sur le serveur, on recharche nfs :

sudo /etc/init.d/nfs-kernel-server reload

Vérifions maintenant quels sont les services actifs avec la commande rpcinfo :

rpcinfo -p
tcp  111  portmapper
udp  942  status
udp  752  mountd
udp 2049  nfs
udp 32799  nlockmgr

Si tout n'est pas ok, et qu'il manque l'un des services sités ci-dessus on redémarre nfs par :

sudo /etc/init.d/nfs-kernel-server start

C'est terminé en ce qui concerne la machine serveur. On peut continuer en configurant les machines client.

2°/ Sur le client :

Il faut installer nfs-common : 

sudo aptitude install nfs-common

Ce qui aura pour conséquence d'installer aussi entre autre :   libevent1  libnfsidmap1  portmap

Note : Sur edgy, nfs-common installera aussi : libgssapi2 et librpcsecgss2. De même sous edgy aucune question n'est posée lors de la configuration de portmap.

Rien d'autre à configurer. On crée maintenant le point de montage sur le client :

sudo mkdir /mnt/nfs

ensuite on monte depuis le client le partage :

sudo mount -t nfs 192.168.1.14:/home/cep/dest/ /mnt/nfs

On vérifie :

mount |grep nfs

192.168.1.14:/home/cep/dest/ on /mnt/nfs type nfs (rw,addr=192.168.1.14)

Si on voulait démonter le partage :   sudo umount  /mnt/nfs

Pour simplifier les choses, on peut configurer cela dans /etc/fstab en y ajoutant une ligne comme par exemple (à adapter à votre configuration :

192.168.1.14:/home/cep/dest    /mnt/nfs    nfs    user,noauto     0      0

C'est un avantage de mettre le partage en noauto dans fstab afin qu'il ne soit pas monté au démarrage de la machine.
Comme il est configuré avec user, ce dernier pourra si nécessaire les monter avec la commande : mount /mnt/nfs 

Note : Si fstab n'est pas configuré en noauto pour monter le partage, le PC serveur de fichiers doit être démarré avant les PC's clients.

L'utilisateur peut aussi créer un lanceur sur le bureau pour monter et démonter le partage. 

nfs_up.png


umount.png


Il peut aussi créer un script mount.sh qui, avec un lanceur, montera ou démontera le partage d'un seul clic.
Exemple : 

#!/bin/bash
# monter ou démonter le partage nfs

if [ ! `/bin/mount | grep -o /mnt/nfs` ]
then
mount /mnt/nfs
else
umount /mnt/nfs
fi

La lecture des man de toutes les commandes vues permettra ensuite de peaufiner et améliorer les configurations.


Retour



Valid HTML 4.01 Transitional        Valid CSS!