Le protocole NFS (Network file system) permet de partager des fichiers entre des machines Unix, et donc Linux. C'est un modèle client-serveur : une machine met à disposition (exporte) des répertoires de son système de fichier local sur le réseau à des clients. Suivant les droits d'accès donnés, des stations du réseau peuvent monter ces répertoires, qui seront alors vus comme des répertoires locaux. Un ordinateur peut être à la fois client et serveur NFS.

Installation côté serveur

modifier

Installation sur Debian :

# apt install nfs-kernel-server

Vérifier que les demons NFS (nfsd) ne sont pas déjà lancés avec, par exemple, la commande

ps ax | grep nfsd

Pour lancer les démons manuellement sous Debian :

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

ou, si c'est le serveur NFS en espace utilisateur qui est installé :

/etc/init.d/nfs-user-server start

On peut remplacer start par restart pour redémarrer le serveur.

Configuration

modifier

Pour partager (ou exporter) des répertoires, il faut renseigner le fichier /etc/exports. Il indique la liste des répertoires partagés et le nom des machines qui y ont accès.

Chaque ligne correspond à un répertoire et a la forme :

<répertoire local> <nom ou IP des machines autorisées à se connecter>(<options>) <autres machines>(<options>)...

Par exemple :

/home/name  station0(rw) station1(ro)
/projet    station1(rw) (ro)
/brouillon

Le serveur exporte son répertoire /home/name. La machine station0 pourra le monter en lecture/écriture (rw read-write), station1 en lecture seule (ro read-only), et les autres machines ne pourront pas se connecter.

De même, station1 pourra accéder en lecture/écriture au répertoire projet et toutes les autres stations en lecture seule.

Enfin, tout le monde pourra accéder en lecture/écriture au répertoire brouillon (l'option rw est celle par défaut).

Pour connaitre la liste des options possibles et leur signification, consultez man exports.

Notez bien que les droits via le réseau seront toujours inhibés par les droits sur le système de fichier : si un utilisateur accède via la station1 au répertoire /projet, il ne pourra pas accéder au fichier test situé dans le répertoire /projet, bien qu'il ait les droits réseaux rw, si le fichier test appartient à root avec les droits 600 (lecture/écriture pour root uniquement, aucun droit pour les autres).

Une fois le fichier /etc/exports correctement configuré, il suffit de relancer le service NFS par la commande suivante pour que les modifications soient prises en compte :

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

Installation côté client

modifier

installation sur Debian (Le "système de fichier réseau" NFS est intégré au noyau compilé avec sa prise en charge dans toutes les distributions récentes.)

# apt install nfs-common

Pour monter un système de fichier distant, utiliser la commande mount avec l'option nfs :

mount -t nfs <machine distante>:<répertoire partagé> <répertoire local> -o <options>

Par exemple si le serveur précédent à pour ip 192.168.105.2 :

mount -t nfs 192.168.105.2:/home/name /mnt/rep_local -o ro

Cette commande montera le répertoire /home/name, exporté par la station 192.168.105.2, dans le répertoire local /mnt/rep_local, en lecture seule.

À la place d'une adresse IP, vous pouvez aussi donner un nom de machine (nom d'hôte ou hostname : le nom figurant à droite du @ dans une console user@hostname). Pour cela, il faut que le nom de machine puisse être converti en adresse IP (en modifiant /etc/hosts par exemple, si on n'a pas de serveur DNS)

Montage au démarrage

modifier

Il est possible de monter les répertoires partagés au démarrage de la station.

Le plus simple est de renseigner le fichier /etc/fstab qui contient une liste des systèmes de fichiers connus.

La syntaxe est la suivante :

<ordinateur distant>:<répertoire distant> <répertoire local> nfs <options> 0 0

Pour reprendre l'exemple précédent, cela donnerait :

192.168.105.2:/home/name /mnt/rep_local nfs auto,rw,user,soft,(autres options…)  0 0

Les options sont décrites dans la page de man de mount. Certaines sont communes à d'autres systèmes de fichiers (ext2, vfat…) alors que d'autres sont spécifiques à NFS. Si le serveur n'est pas toujours disponible ou susceptible de ne plus l'être en cours d'utilisation il est préférable de ne pas monter automatiquement le répertoire distant au démarrage au risque de bloquer votre poste client : option noauto .