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 serveur NFS sur une machine locale sous CentOS 7. 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.
Prérequis
NFSv4 utilise le port 2049 en TCP. Il faut donc songer à ouvrir ce port dans le pare-feu.
$ sudo firewall-cmd --permanent --add-service=nfs $ sudo firewall-cmd --reload $ sudo firewall-cmd --list-all internal (active) target: default icmp-block-inversion: no interfaces: enp2s0 sources: services: nfs ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
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
Installer la panoplie d’outils NFS et leurs dépendances.
$ sudo yum install nfs-utils
Si l’on a désactivé l’IPv6 sur le serveur, il faut impérativement reconstruire le disque mémoire initial, sous peine de se retrouver avec un service RPC (Remote Procedure Call) qui refuse obstinément de démarrer.
$ sudo dracut -f -v
Pour plus de détails, consulter les explications sur cette page.
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 = microlinux.lan
Voici les répertoires utilisateurs que je souhaite partager en lecture et en écriture.
$ tree -d -L 1 /home/ /home/ ├── adebuf ├── fbanester ├── fteyssier ├── jmortreux ├── microlinux └── nkovacs
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.2.0/24(ro,async,no_subtree_check) \
*.microlinux.lan(ro,async,no_subtree_check)
/home 192.168.2.0/24(rw,async,no_subtree_check) \
*.microlinux.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 écriture 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.2.0/24
et les options(rw,async)
.
Gestion
Activer et démarrer les services RPC et NFS.
$ sudo systemctl enable rpcbind nfs-server --now
La configuration des clients NFS fera l’objet de notre prochain article.
Documentation
- Configuring the NFS server (Red Hat)
- Partages de fichiers NFS (Formatux)
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.