NFS (Network File System) est un système de partage de fichiers qui utilise les protocoles TCP/IP, RPC et XDR. La plupart des systèmes d’exploitation de type UNIX fournissent une implémentation de NFS dérivée du produit NFS de Sun.
Remarque : Même si il a souffert de graves défauts (mauvaise gestion des locks, peu de sécurité, …) par le passé, il reste le standard pour les partages de fichiers en réseaux hétérogènes (réseaux mélangeant différents systèmes d’exploitation). En effet, les autres systèmes de fichiers réseaux sont soit trop liés à un type de système d’exploitation (SMB, CIFS), soit propriétaires (NCP), soit trop lourd à mettre en oeuvre pour la plupart des réseau locaux de petites tailles (Coda).
Le principal intérêt de NFS réside donc dans le fait qu’il fonctionne correctement et est performant sur la plupart des systèmes d’exploitation, sans avoir besoin de beaucoup de configuration.
Les termes utilisés dans NFS sont :
Remarque : NFS ne s’occupe pas des droits d’accès aux fichiers et répertoires, il laisse le système d’exploitation s’occuper de la sécurité. Celle-ci est donc gérée de la même façon que pour les fichiers locaux, avec les droits UNIX standards.
$ sudo apt-get install nfs-kernel-server
$ sudo apt-get install nfs-common
La configuration du service NFS, côté serveur, se limite à lister les ressources partagées et les droits de montage.
Le fichier /etc/exports
contient la liste des ressources partagées, une ligne par ressource. Le format des lignes et le suivant :
répertoire client1(options) client2(options) ...
Où :
/
).client est un nom d’un ou plusieurs hôtes du réseau sous une des formes suivantes :
machine.intra.net
192.168.52.0/24
options (optionnel) est une liste d’options séparées par des virgules. Les options les plus utiles sont :
ro
ou rw
: Read Only (par défaut) ou Read Writeroot_squash
: L’utilisateur root local des clients (UID 0, GID 0) est considéré comme un utilisateur anonyme par le serveur (par défaut)no_root_squash
: L’utilisateur root des clients a les mêmes droits que l’utilisateur root du serveur (dangereux !)squash_uids
: liste des UID qui seront considérés comme utilisateurs anonymes par le serveur.Exemple de fichier /etc/exports
:
/export/home 192.168.0.0/16(rw,root_squash) admin.intra.net(rw,no_root_squash)
/usr/local machin.intra.net(ro) 192.168.0.10(rw)
A chaque modification du fichier /etc/exports
, il faut recharger la configuration du service :
# /etc/init.d/nfs-kernel-server reload
La liste des ressources partagées peut être obtenue à l’aide de la commande showmount
:
$ showmount -e
/export/home 192.168.0.0/16,admin.intra.net
/usr/local machin.intra.net,192.168.0.10
Aucune configuration particulière n’est nécessaire pour les clients. Les ressources partagées peuvent être listées et montées/démontées manuellement ou automatiquement.
Montage et démontage manuels d’une ressource :
$ showmount -e monserveur
$ mkdir -p /partage
$ mount monserveur:/export/home /partage
$ ls /partage/
$ umount /partage
Pour que cette ressource soit montée automatique au démarrage du client, il suffit de rajouter dans le fichier /etc/fstab
du client la ligne suivante :
monserveur:/export/home /partage nfs rw 0 0