NFSNFS (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

ImportantSi 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


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.

 

Catégories : Serveur