Configurer un serveur NFS sous Linux : partage de répertoire | INTROSERV
EUR
european

EUR

usa

USD

French Fr
Ex. VAT Ex. VAT 0%

Configurer un serveur NFS sous Linux pour partager un répertoire via NFS

Niveau : Avancé
Durée estimée : ~30 minutes
Objectif : Configurer un serveur NFS sous Linux pour partager un répertoire avec plusieurs clients, afin de faciliter l'automatisation des tâches courantes et l'audit de sécurité proactif.

Introduction

La gestion d'un stockage partagé sur un parc de serveurs est une exigence fondamentale pour maintenir des environnements de production soumis à de fortes contraintes de disponibilité. Le protocole NFS (Network File System) permet à un système de partager un répertoire via NFS sur le réseau, à la manière d'un NAS (Network Attached Storage). En déployant un serveur NFS sous Linux, vous pouvez offrir un accès centralisé aux fichiers à plusieurs clients NFS simultanément. Ce tutoriel explique comment configurer un serveur NFS sous Linux efficacement, en utilisant NFSv4.2 par défaut.

Warning

Ce guide utilise le mode de sécurité sec=sys (AUTH_SYS). Dans ce mode, le serveur fait intrinsèquement confiance au client pour l'identification des utilisateurs (UID/GID), sans aucune authentification cryptographique. Le contrôle d'accès repose uniquement sur le filtrage par adresse IP dans /etc/exports et sur les permissions UNIX standard des fichiers. Cette configuration convient parfaitement aux réseaux internes de confiance (par exemple au sein d'un environnement virtuel Proxmox), mais elle n'est pas recommandée pour les réseaux non fiables. Pour renforcer la sécurité, envisagez de mettre en place l'authentification Kerberos (par exemple sec=krb5, sec=krb5i ou sec=krb5p).

Prérequis

Avant de commencer, assurez-vous que les conditions suivantes sont remplies :

  • Système d'exploitation : Ubuntu 22.04/24.04 LTS, Debian 12/13 ou CentOS/RHEL 9/AlmaLinux 10
  • Logiciel requis : nfs-kernel-server (2.6+) pour Ubuntu/Debian ou nfs-utils (2.x+) pour CentOS/RHEL/AlmaLinux
  • Accès : accès sudo ou root sur toutes les machines
  • Réseau : les serveurs doivent pouvoir communiquer via un réseau privé.
  • Connaissances requises : aisance avec la ligne de commande Linux.

Terminologie

Familiarisez-vous avec les concepts fondamentaux suivants avant de poursuivre :

  • NFS (Network File System) : protocole permettant d'accéder à des fichiers via un réseau comme s'ils étaient stockés localement.
  • Serveur NFS : la machine centrale qui héberge les fichiers et les met à disposition sur le réseau.
  • Client NFS : la machine distante qui se connecte au serveur pour accéder aux fichiers partagés.
  • Répertoire partagé (Shared Directory) : le dossier local du serveur qui sera mis à la disposition des clients.
  • Export : le processus consistant à rendre un répertoire local accessible aux clients via le réseau.
  • /etc/exports : le principal fichier de configuration utilisé par le démon NFS pour déterminer quels répertoires exporter et selon quelles règles d'accès.
  • Montage (Mounting) : le processus consistant à rattacher un partage réseau distant à l'arborescence locale.
  • Point de montage (Mount Point) : le répertoire local du client sur lequel le système de fichiers distant est rattaché.
  • nfs-utils : le paquet logiciel contenant les utilitaires et démons nécessaires au client et au serveur NFS.
  • RPC (Remote Procedure Call) : protocole qu'un programme peut utiliser pour demander un service à un programme situé sur un autre ordinateur.
  • Portmapper / rpcbind : service qui associe les numéros de programmes RPC à des numéros de ports réseau, nécessaire à NFS pour négocier les connexions.
  • Permissions : droits d'accès qui déterminent qui peut lire, écrire ou exécuter des fichiers.
  • Accès en lecture seule (RO) : état de permission permettant aux clients de consulter les fichiers sans les modifier.
  • Accès en lecture-écriture (RW) : état de permission permettant aux clients de modifier les fichiers partagés.
  • root_squash : fonction de sécurité qui associe les requêtes de l'utilisateur root distant à un utilisateur non privilégié (nobody) afin d'empêcher tout accès root non autorisé.
  • Pare-feu (Firewall) : système de sécurité réseau qui surveille et contrôle le trafic réseau entrant et sortant.
  • Système de fichiers Linux : la méthode structurée utilisée par Linux pour stocker et organiser les fichiers sur disque.
  • Nom d'hôte (Hostname) : étiquette lisible par l'humain attribuée à un appareil connecté à un réseau informatique.
  • Adresse IP : identifiant numérique unique attribué à chaque appareil connecté à un réseau.
  • Automount (montage automatique) : pratique consistant à monter automatiquement les systèmes de fichiers au démarrage.
  • NAS (Network Attached Storage) : architecture de stockage au niveau fichier qui rend les données accessibles via un réseau.

Étape 1 : Installer les paquets requis

Commencez par installer les logiciels nécessaires sur le serveur et sur les clients. Le paquet nfs-utils fournit les démons et les outils nécessaires pour gérer le système de fichiers. Les installations modernes doivent utiliser NFSv4.2 par défaut : ce protocole est avec état (stateful) et simplifie les règles de pare-feu.

Sur le serveur NFS (Debian/Ubuntu) :

sudo apt update sudo apt install nfs-kernel-server

Sur le serveur NFS (CentOS/RHEL/AlmaLinux) :

sudo dnf install nfs-utils sudo systemctl enable --now rpcbind nfs-server

Info

Dans une configuration NFSv4 pure, le service rpcbind n'est techniquement pas nécessaire pour le montage NFS lui-même. Il le devient toutefois si vous comptez utiliser la commande showmount (comme indiqué à l'Étape 5) pour découvrir les exports, ou si vous devez prendre en charge d'anciens clients NFSv3.

Sur le client NFS (Debian/Ubuntu) :

sudo apt update sudo apt install nfs-common

Sur le client NFS (CentOS/RHEL/AlmaLinux) :

sudo dnf install nfs-utils

L'installation doit se terminer correctement. Les services RPC et NFS nécessaires sont désormais installés et en cours d'exécution.

Étape 2 : Créer le répertoire partagé et définir les permissions NFS

Créez sur le serveur le répertoire que vous souhaitez exporter :

sudo mkdir -p /mnt/nfs_share

Définissez les permissions NFS appropriées afin que les clients puissent accéder aux fichiers. Dans ce tutoriel, nous attribuerons la propriété à l'utilisateur de service dédié et non privilégié, et accorderons les permissions de groupe adéquates.

Debian/Ubuntu :

sudo chown nobody:nogroup /mnt/nfs_share sudo chmod 2775 /mnt/nfs_share

CentOS/RHEL/AlmaLinux :

sudo chown nobody:nobody /mnt/nfs_share sudo chmod 2775 /mnt/nfs_share

Cette configuration ne contourne pas le modèle de permissions local de Linux : le contrôle d'accès NFS n'est donc pas votre unique couche de sécurité. La permission 2775 permet la collaboration en groupe en toute sécurité, sans enfreindre le principe du moindre privilège.

Étape 3 : Configurer le serveur NFS sous Linux

Pour définir les règles d'export, vous devez modifier le fichier /etc/exports sur le serveur.

Ouvrez le fichier :

sudo nano /etc/exports

Ajoutez la ligne suivante pour autoriser l'accès à un sous-réseau de clients précis (par exemple <CLIENT_SUBNET>) :

/mnt/nfs_share <CLIENT_SUBNET>(rw,sync,no_subtree_check,root_squash)

Le serveur exportera alors le répertoire avec les options suivantes :

  • rw : accorde l'accès en lecture-écriture (RW). Utilisez ro pour un accès en lecture seule (RO).
  • sync : force l'écriture des modifications sur le disque avant de répondre au client.
  • no_subtree_check : désactive la vérification de sous-arborescence (subtree), ce qui améliore la fiabilité.
  • root_squash : associe explicitement les requêtes de l'utilisateur root distant à un utilisateur non privilégié (nobody). C'est le comportement par défaut, mais il convient de toujours l'indiquer explicitement à des fins d'audit. N'utilisez no_root_squash que dans des environnements strictement contrôlés.

Info

Vous pouvez spécifier plusieurs clients en ajoutant d'autres adresses IP ou sous-réseaux séparés par des espaces sur la même ligne, ce qui ouvre l'accès à plusieurs machines.

Appliquez la configuration d'export :

Debian/Ubuntu :

sudo exportfs -a sudo systemctl restart nfs-kernel-server

CentOS/RHEL/AlmaLinux :

sudo exportfs -a sudo systemctl restart nfs-server

Le serveur exporte désormais activement le répertoire sur le réseau.

Étape 4 : Configurer le pare-feu

Vous devez autoriser le trafic NFS à travers le pare-feu du serveur afin de permettre les connexions des clients.

Avec UFW (Debian/Ubuntu) :

Sur une installation neuve d'Ubuntu, UFW est inactif par défaut. Sur un système Debian 13 vierge, il peut même ne pas être installé. Si vous comptez utiliser UFW, vérifiez qu'il est installé (sudo apt install ufw) et explicitement activé avant d'ajouter vos règles :

sudo ufw enable sudo ufw allow from <CLIENT_SUBNET> to any port nfs

Avec Firewalld (CentOS/RHEL/AlmaLinux) :

sudo firewall-cmd --permanent --zone=public --add-service=nfs sudo firewall-cmd --permanent --zone=public --add-service=rpc-bind sudo firewall-cmd --permanent --zone=public --add-service=mountd sudo firewall-cmd --reload

Info

AlmaLinux/RHEL (SELinux) : sur une installation vierge d'AlmaLinux, SELinux est en mode Enforcing. Pour le chemin par défaut /mnt/nfs_share utilisé dans ce guide, le contexte existant mnt_t est compatible avec le démon nfsd. En revanche, si vous prévoyez d'exporter des chemins non standard (par exemple /srv, /data ou /home/...), NFS ne pourra pas y écrire tant que vous n'aurez pas configuré SELinux en conséquence. Vous pouvez soit activer le booléen global (sudo setsebool -P nfs_export_all_rw 1), soit définir le bon fcontext avec semanage.

Les clients du sous-réseau autorisé peuvent désormais accéder aux services NFS.

Étape 5 : Vérifier l'export avec la commande showmount

Sur le serveur, vérifiez de manière proactive les exports actifs et l'état d'audit interne afin de garantir la conformité en matière de sécurité. Exécutez la commande suivante pour contrôler les options d'export exactes appliquées par le démon NFS :

sudo cat /var/lib/nfs/etab

Vous pouvez également utiliser sudo exportfs -v pour afficher la liste détaillée des exports.

Ensuite, depuis la machine cliente, utilisez la commande showmount pour vérifier que l'export est visible sur le réseau. Remplacez <SERVER_IP> par l'adresse IP réelle de votre serveur NFS.

Info

showmount nécessite que le port 111 (rpcbind) soit ouvert sur le serveur. Si vous utilisez une configuration NFSv4 pure et que vous n'avez pas ouvert ce port, ignorez cette étape : vérifiez les exports sur le serveur avec sudo exportfs -v et testez l'accessibilité depuis le client en effectuant le montage à l'Étape 6.

showmount -e <SERVER_IP>

Sortie attendue :

Export list for <SERVER_IP>: /mnt/nfs_share <CLIENT_SUBNET>

Si l'export figure dans la liste, la configuration du serveur est correcte et accessible depuis le client.

Étape 6 : Monter le système de fichiers NFS sur le client

Pour utiliser le partage, vous devez monter le système de fichiers NFS sur un point de montage local du client.

Créez le point de montage :

sudo mkdir -p /mnt/client_share

Montez le répertoire :

sudo mount -t nfs -o vers=4.2 <SERVER_IP>:/mnt/nfs_share /mnt/client_share

Le partage est maintenant monté. Vous pouvez le vérifier en exécutant df -h pour voir le lecteur réseau rattaché. Préciser vers=4.2 garantit que le client utilise explicitement la version la plus récente du protocole, au lieu de rétrograder silencieusement vers NFSv3 ou NFSv4.0.

Tip

Pour que le client monte le système de fichiers NFS automatiquement au démarrage, vous pouvez configurer un montage statique en ajoutant une entrée dans /etc/fstab. Notez qu'il s'agit d'un montage statique ; les véritables configurations Automount dynamiques sont généralement gérées en production via autofs (/etc/auto.master).

Ouvrez /etc/fstab :

sudo nano /etc/fstab

Ajoutez la ligne suivante :

<SERVER_IP>:/mnt/nfs_share /mnt/client_share nfs auto,nofail,noatime,_netdev,hard,vers=4.2,timeo=600 0 0

Cela évite que le client ne bloque le processus de démarrage si le serveur est temporairement injoignable.

Vérification

Pour confirmer que les permissions NFS et les paramètres réseau sont corrects, effectuez un test de lecture/écriture depuis le client :

touch /mnt/client_share/test_file.txt ls -l /mnt/client_share/

Sortie attendue :

-rw-r--r-- 1 nobody nogroup 0 May 24 12:00 test_file.txt

Info

Selon le système d'exploitation du client, le propriétaire du fichier s'affichera comme nobody nogroup (Debian/Ubuntu) ou nobody nobody (RHEL/AlmaLinux). C'est le comportement attendu du mappage d'identités (idmapping) de NFSv4 lorsque les requêtes sont correctement associées à un utilisateur non privilégié. En cas de divergences, vérifiez que le paramètre Domain de /etc/idmapd.conf est identique sur le serveur et sur le client.

Si le fichier est créé avec succès, vos clients peuvent communiquer avec le serveur et écrire des données comme prévu.

Annulation des modifications

Pour démonter le partage sur le client :

sudo umount /mnt/client_share

Supprimez l'entrée de /etc/fstab sur le client si vous en avez ajouté une.

Pour arrêter le partage du répertoire sur le serveur, supprimez la ligne correspondante de /etc/exports et appliquez les modifications :

Debian/Ubuntu :

sudo exportfs -a sudo systemctl restart nfs-kernel-server

CentOS/RHEL/AlmaLinux :

sudo exportfs -a sudo systemctl restart nfs-server

Pour supprimer complètement les paquets installés :

Debian/Ubuntu :

sudo apt remove nfs-kernel-server nfs-common

CentOS/RHEL/AlmaLinux :

sudo dnf remove nfs-utils

Cette action désactivera entièrement les fonctionnalités NFS sur vos machines.

Conclusion

Vous avez appris avec succès à configurer un serveur NFS sous Linux. Avec une configuration adaptée, vous pouvez partager un répertoire via NFS en toute sécurité avec plusieurs clients NFS. Cette configuration constitue une base fiable pour automatiser les tâches d'administration courantes et centraliser les journaux en vue d'audits de sécurité proactifs.

Version du document : 1.0
Dernière mise à jour : mai 2026
Responsable : Équipe de documentation technique

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA