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.
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=
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.
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.
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.


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.