NFS signifie Network File System. C'est, comme son nom l'indique, un système de fichiers en réseau qui permet de partager ses données principalement entre systèmes UNIX. À la différence de SAMBA, NFS gère les permissions sur les fichiers et on peut donc l'utiliser de manière totalement transparente dans son arborescence Linux.
ATTENTION !
Comme toute application réseau, NFS ouvre des trous dans la sécurité du système. Je t'invite donc à consulter les liens à la fin de cet article pour des précisions sur la sécurité.
Dans la configuration du noyau, on va dans la section "File systems ---> Network File Systems"
NFS file system support et Provide NFSv3 client support
CONFIG_NFS_FS=y ou m CONFIG_NFS_V3=y
NFS server support et Provide NFSv3 server support
CONFIG_NFSD=y ou m CONFIG_NFSD_V3=y
À partir du noyau 2.2.18, les modules supportent entièrement la version 3 du protocole ainsi que différentes corrections de bug.
Il serait temps d'upgrader si tu ne l'as pas déjà fait! (profites-en pour passer au 2.4, ce sera réglé :)
Les packages (sur ma Debian) sont :
Tu peux toujours récupérer les sources qui se trouvent sur http://nfs.sourceforge.net/.
On va aussi installer le wrapper TCP pour un minimum de sécurité. Toujours sur ma Debian, le paquet s'appelle tcpd. Les sources se trouvent ici.
Les 3 fichiers de configuration principaux sont /etc/exports, /etc/hosts.deny et /etc/hosts.allow.
Le fichier /etc/exports est très simple :
répertoire machine1(option11,option12) machine2(option21,option22)
par exemple :
/home 192.168.0.10(rw) 192.168.0.25(ro)
signifie que l'on autorisera la machine 192.168.0.10 à accéder à notre répertoire /home en lecture et écriture (rw) ainsi que la machine 192.168.0.25 mais uniquement en lecture (ro).
Un point important, pour un bon fonctionnement : tu dois avoir les mêmes numéros de groupes et d'utilisateurs sur les deux machines.
Des systèmes permettent de gérer çà, NIS (assez ancien) ou LDAP (plus récent). Avec peu d'utilisateurs, tu peux tout simplement éditer /etc/group et /etc/passwd pour synchroniser ces numéros.
Il n'est pas recommandé d'exporter un système DOS ou VFAT à cause de leurs absences de gestion multi-utilisateurs ; ils ne sont pas fait pour être partagés avec NFS.
On va interdire toutes les machines qui ne sont pas autorisées explicitement dans le /etc/hosts.allow.
Un bon vieux "ALL: ALL" interdira l'accès à tous les services à partir de toutes les machines. On peut cependant être plus précis en écrivant :
portmap:ALL lockd:ALL mountd:ALL rquotad:ALL statd:ALL
Dans le même esprit que pour le /etc/hosts.deny, ce fichier a l'architecture suivante :
[service]: [IP de la machine client]
Donc pour autoriser 192.168.1.34 à se connecter à un partage NFS, on écrira :
portmap:192.168.1.34 lockd:192.168.1.34 mountd:192.168.1.34 rquotad:192.168.1.34 statd:192.168.1.34
On va pouvoir lancer les services ; sur ma Debian, je lance :
# /etc/init.d/nfs-server start
La commande rpcinfo -p permet de vérifier que les services fonctionnent. Elle devrait produire un résultat dans cet esprit :
cacahuete:~# rpcinfo -p program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 737 status 100024 1 tcp 739 status 100011 1 udp 851 rquotad 100011 2 udp 851 rquotad 100003 2 udp 2049 nfs 100003 2 tcp 2049 nfs 100005 1 udp 872 mountd 100005 2 udp 872 mountd 100005 1 tcp 875 mountd 100005 2 tcp 875 mountd cacahuete:~#
Pour recharger les services NFS (par exemple après une modification du fichier de config) :
cacahuete:~# killall -HUP nfsd
le serveur est prêt !
Pour utiliser NFS v3, il faut au minimum la version 2.10m du programme mount. Pour voir sa version, taper :
cacahuete:~# mount -V mount: mount-2.11h cacahuete:~#
On va maintenant pouvoir monter notre partage!
cacahuete:~# mount mon.serveur.nfs:/home /mnt/home cacahuete:~#
En principe tout devrait bien se dérouler.
Pour monter ce partage définitivement à chaque démarrage de la machine, éditons notre /etc/fstab:
# device mountpoint fs-type options dump fsckorder ... master.foo.com:/home /mnt nfs rw 0 0 ...
Copyright © 22/10/2001, Guillaume Pierronnet
![]() ![]() ![]() ![]() |
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique, Contexte non commercial 2.0 : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ |