dernière modification : 2025

NFS

NFS (Network File System) est un service réseau permettant de partager une arborescence de répertoires entre divers équipements. Ce service met en relation des serveurs NFS qui exportent des arborescences de répertoires et des clients qui montent les répertoires exportés.

1. Le serveur NFS

Mettre en place un serveur NFS demande :

  1. d’installation les packages nécessaires

  2. de définir les répertoires à exporter

  3. de démarrer le service

  4. d’adapter le cas échéant les règles du firewall

1.1. Installer les packages

sur redhat-like
# dnf install nfs-utils
sur debian-like
# apt-get upgrade
# apt-get install nfs-kernel-server

1.2. Définir les exports

Chaque répertoire exporté doit être listé dans le fichier /etc/exports. La syntaxe est stricte : un répertoire par ligne, pas d’espace superflu, etc. Exemples de fichier /etc/exports :

  • pour exporter un répertoire /public en read+write pour tout équipement

    /public *(rw)
  • pour exporter 2 répertoires, l’un en read+write, l’autre en read-only, pour tout équipement

    /public *(rw)
    /public2 *(ro)
  • 1 répertoire exporté en read+write pour 192.168.1.1, et en read-only pour 192.168.1.2 :

    /public 192.168.1.1(rw) 192.168.1.2(ro)

Lorsque que le fichier /etc/exports est correctement rempli, il est nécessaire de lancer la commande ci-dessous pour que la modification soit prise en compte :

# exportfs -rv

1.3. Démarrer le service

# systemctl start nfs-server

Pour que le démarrage soit effectif à chaque reboot :

# systemctl enable nfs-server

1.4. Adapter le firewall

Si un firewall tourne sur le serveur, alors il est nécessaire d’ajuster les règles de filtrage pour autoriser les clients NFS à accéder aux partages.

Il se peut que l’installation du package adapte automatiquement les règles du firewall. Sinon, pour tester l’exportation sans se poser de question, on peut (exceptionnellement) arrêter le firewall. Sur Redhat, on arrête le firewall par :

# systemctl stop firewalld

Pour désactiver définitivement le firewall (déconseillé) :

# systemctl disable firewalld

2. Le client NFS

Monter un répertoire est une opération globale au client, qui affecte tous les utilisateurs. Il doit donc être réalisé par root. Par exemple, monter le répertoire /public exporté par 192.168.1.3 sur l’équipement local se fait par la commande :

# mount 192.168.1.3:/public /mnt

La commande ci-dessus accroche le répertoire /public du serveur distant sur le répertoire /mnt de l’équipement local. Si /mnt contient des fichiers, ceux-ci seront masqués tant que le montage sera actif.

Un équipement donné peut monter un nombre quelconque de répertoires depuis un nombre quelconque de serveurs, et en exporter lui-même d’autres.

Pour démonter le répertoire :

# umount /mnt

Le fichier /etc/fstab liste tous les montages qui doivent se réaliser automatiquement au boot. Donc si l’on veut qu’un montage donné soit automatique à chaque boot, il faut ajouter une ligne dans /etc/fstab :

192.168.1.3:/public /mnt nfs rw 0 0
Le fichier /etc/fstab contient tous les montages souhaités, pas seulement les montages NFS. Il contient notamment le montage de toutes les partitions locales qui constituent le filesystem complet.