NFS (Network File System) est le système de fichiers en réseau « classique » des plateformes Unix, avec un fonctionnement client-serveur. Le serveur met à disposition des ressources pour les clients du réseau ou une partie du réseau. Les fichiers distants sont montés dans un répertoire et apparaissent comme un système de fichiers local. À partir de là, les utilisateurs clients accèdent en toute transparence aux fichiers partagés par le serveur, en parcourant les répertoires comme s’il s’agissait d’une arborescence locale.
Dans cet article, nous allons décrire la mise en place d’un partage NFS sur une machine locale sous Rocky Linux 8. Le but ultime de cette opération sera la création d’une authentification centralisée avec des profils itinérants dans le réseau local. Notre serveur NFS constituera la première brique logicielle d’une telle configuration.
Depuis septembre 2010, j’administre le réseau informatique d’un lycée privé dans les Cévennes, équipé exclusivement de machines tournant sous Linux. Les comptes utilisateurs et les données de la direction, des enseignants et des élèves sont centralisés sur un serveur et partagés via NFS. Si vous n’avez pas de postes Windows dans votre réseau, je vous conseille d’utiliser NFS qui « juste marche ».
Prérequis
NFSv4 utilise le port 2049 en TCP. Il faut donc songer à ouvrir ce port dans le pare-feu :
# firewall-cmd --permanent --add-service=nfs # firewall-cmd --reload # firewall-cmd --list-services nfs ssh
Le serveur et les postes clients doivent impérativement être synchronisés via NTP, sous peine de se retrouver avec toute une série d’erreurs bizarres.
Installation
La panoplie des outils NFS et leurs dépendances sont fournies par les dépôts officiels de Red Hat Enterprise Linux et Rocky Linux :
# dnf install -y nfs-utils
Configuration
Renseigner le domaine local dans /etc/idmapd.conf
:
[General]
# Verbosity = 0
# The following should be set to the local NFSv4 domain name
# The default is the host's DNS domain name.
Domain = scholae.lan
Voici les répertoires utilisateurs que je souhaite partager en lecture et en écriture :
$ tree -d -L 1 /home/
/home/
├── abard
├── abilancini
├── acorp
├── adebuf
├── adulac
...
├── wkansteiner
├── yaubry
├── ylornage
├── yvignal
└── zkonjolka
Par ailleurs, je dispose également d’une arborescence /data
que je souhaite partager en lecture seule.
$ tree -d -L 1 /data/ /data/ ├── audio ├── iso └── video
Nous allons définir ces partages dans le fichier /etc/exports
:
# /etc/exports
/data 192.168.10.0/24(ro,async,no_subtree_check) \
*.scholae.lan(ro,async,no_subtree_check)
/home 192.168.10.0/24(rw,async,no_subtree_check) \
*.scholae.lan(rw,async,no_subtree_check)
- L’option
ro
monte le répertoire distant en lecture seule. - L’option
rw
monte le répertoire distant en lecture/écriture. - L’option
async
permet des écritures asynchrones, c’est-à-dire que le serveur n’attend pas l’écriture d’une requête précédente avant de répondre. - Sans trop rentrer dans les détails, l’option
no_subtree_check
neutralise la vérification des sous-répertoires, ce qui a de subtiles implications au niveau de la sécurité, mais peut améliorer la fiabilité dans certains cas. - La barre oblique inversée
\
permet d’éviter les lignes à rallonge. - Attention à ne pas mettre d’espace entre la définition du réseau
192.168.10.0/24
et les options(rw,async,no_subtree_check)
.
Mise en service
Activez et démarrez les services RPC et NFS :
# systemctl enable rpcbind --now # systemctl enable nfs-server --now
Vérifiez l’état du serveur :
# systemctl status rpcbind ● rpcbind.service - RPC Bind Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled) Active: active (running) ... # systemctl status nfs-server ● nfs-server.service - NFS server and services Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled) Drop-In: /run/systemd/generator/nfs-server.service.d └─order-with-mounts.conf Active: active (exited) ...
Maintenant que notre serveur NFS est en place, nous pouvons passer au montage des partages sur les postes clients.
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.
2 commentaires
tuxmika · 6 juin 2024 à 20 h 37 min
Bonjour
Si tous les dossiers dans /home sont en ro,qui a les droits d’écriture dans ces dossiers ?
Cordialement
kikinovak · 21 juillet 2024 à 9 h 04 min
C’est les dossiers
/data
qui sont enro
. L’arborescence/home
est enrw
.