4. Configuration du serveur NFS

Cette partie reprend les étapes décrites dans le support Introduction au système de fichiers réseau NFSv4. Après avoir traité la partie commune de la configuration NFS, il s'agit d'installer le paquet correspondant au serveur NFS et de créer l'arborescence des comptes utilisateurs à exporter avec le bon contexte de nommage.

Q11.

Quel est le paquet commun au client et au serveur ? Identifier le jeu de commandes fournies par ce paquet.

Rechercher dans la liste des paquets disponibles, ceux dont le nom débute par nfs.

aptitude search ?name"(^nfs)" | grep -v ganesha
v  nfs-client -
p  nfs-common - NFS support files common to client and server
p  nfs-kernel-server - support for NFS kernel server
v  nfs-server -
p  nfs4-acl-tools - Commandline and GUI ACL utilities for the NFSv4 client
p  nfstrace - NFS tracing/monitoring/capturing/analyzing tool
p  nfstrace-doc - NFS tracing/monitoring/capturing/analyzing tool (documentation)
p  nfswatch - Program to monitor NFS traffic for the console

Dans la liste ci-dessus, on identifie le paquet nfs-common qui correspond bien aux fonctions communes au client et au serveur NFS.

sudo apt install nfs-common

Une fois le paquet installé, la liste des programmes fournis par ce paquet est extraite de la liste de ses fichiers à l'aide de la commande suivante.

dpkg -L nfs-common | grep bin
/sbin
/sbin/mount.nfs
/sbin/osd_login
/sbin/rpc.statd
/sbin/showmount
/sbin/sm-notify
/usr/sbin
/usr/sbin/blkmapd
/usr/sbin/mountstats
/usr/sbin/nfsidmap
/usr/sbin/nfsiostat
/usr/sbin/nfsstat
/usr/sbin/rpc.gssd
/usr/sbin/rpc.idmapd
/usr/sbin/rpc.svcgssd
/usr/sbin/rpcdebug
/usr/sbin/start-statd
/sbin/mount.nfs4
/sbin/umount.nfs
/sbin/umount.nfs4

Dans cette liste, on trouve les commandes de montage, de démontage et de suivi d'état du système de fichiers réseau.

Q12.

Quel est le paquet qui contient les outils nécessaires au fonctionnement du serveur NFS ? Installez ce paquet.

Interroger les méta données du gestionnaire de paquets pour identifier le nom du paquet à installer.

La recherche des mots clés nfs et server donne les résultats suivants.

# aptitude search '?and(nfs, server)'
p   nfs-kernel-server   - gestion du serveur NFS du noyau
v   nfs-server

Les informations données par la commande # aptitude show nfs-kernel-server permettent de confirmer qu'il s'agit bien du paquet à installer.

# aptitude install nfs-kernel-server

Q13.

Quel est le fichier de configuration principal de gestion des exportations NFS ?

Rechercher dans le support Linux NFS-HOWTO.

Quelles que soient les versions du protocole, c'est toujours le fichier /etc/exports qui est utilisé. Ce fichier est présenté dans le support Linux NFS-HOWTO. Le fichier livré avec le paquet contient, en commentaires, deux exemples complets de configuration NFSv3 et NFSv4. C'est ce dernier exemple que l'on adapte pour traiter les questions suivantes.

Q14.

Quelle est la syntaxe à utiliser dans le fichier de configuration pour «exporter» le répertoire /home/exports/home ?

Créer le répertoire /home/exports/home et rechercher dans les supports Linux NFS-HOWTO et Nfsv4 configuration la syntaxe à utiliser pour éditer le fichier /etc/exports.

On applique la configuration suivante.

# mkdir -p /home/exports/home
# grep -v ^# /etc/exports 
/home/exports         2001:db8:feb2:10::/64(rw,sync,fsid=0,crossmnt,no_subtree_check)
/home/exports/home    2001:db8:feb2:10::/64(rw,sync,no_subtree_check)

Lors de ces travaux pratiques, on cherche à valider les services de façon autonome et indépendante. C'est la raison pour laquelle les fonctions de sécurité Kerberos ne sont pas utilisées. On utilise l'appartenance au réseau IP comme critère de contrôle d'accès ; ce qui correspond à un niveau de sécurité faible.

Q15.

Comment rendre le système de nommage cohérent entre clients et serveur pour les répertoires utilisateur publiés via le service NIS ? Quel est l'intérêt de cette opération ?

Rechercher la syntaxe du montage local à réaliser pour que les comptes utilisateurs soient vus à partir de la même racine : le répertoire /ahome/.

Du point de vue infrastructure, l'utilisation d'une référence de nommage unique présente un avantage non négligeable. En effet, les répertoires d'exportation tels qu'ils ont été définis dans le fichier /etc/exports donné ci-dessus désignent un espace de stockage physique. La racine /ahome/ désigne un espace de stockage logique. Ce schéma de nommage logique doit rester constant alors que les volumes de stockage physique peuvent migrer et se déplacer, être étendus, etc. Ainsi, toutes les manipulations faites côté infrastructure (sur les serveurs) n'auront aucune incidence sur la configuration des clients.

L'utilisation d'un montage local avec l'option bind de la commande mount permet de mettre en cohérence l'arborescence du serveur et de ses clients. Ainsi, le répertoire /ahome/ présente les mêmes objets que l'on soit connecté sur le serveur ou sur un client. Le schéma de nommage est donc cohérent.

Le montage local peut se faire manuellement sur le serveur avec la syntaxe suivante.

# mkdir /ahome
# mount --bind /home/exports/home /ahome

Une fois la configuration validée, on peut intégrer ce montage local dans la configuration système pour que l'opération soit effectuée à chaque initialisation. Il faut alors éditer le fichier de configuration dédié aux montages des volumes locaux du système : /etc/fstab. Voici un exemple de la dernière ligne d'un fichier /etc/fstab de serveur.

# tail -1 /etc/fstab
/home/exports/home     /ahome  none    defaults,bind     0       0

Q16.

Quelle est la commande qui permet de visualiser l'état courant de l'arborescence exportée ?

Rechercher dans la liste des fichiers du paquet relatif au serveur NFS.

La liste des commandes fournies avec le paquet nfs-kernel-server est la suivante.

# dpkg -L nfs-kernel-server | grep bin
/usr/sbin
/usr/sbin/exportfs
/usr/sbin/rpc.mountd
/usr/sbin/rpc.nfsd
/usr/sbin/rpc.svcgssd

Chacune de ces commandes dispose de pages de manuels. En consultant ces pages, on relève que la commande exportfs est chargée de la gestion de la liste des systèmes de fichiers partagés par NFS. L'exécution de cette commande sans argument affiche la liste des répertoires exportés. Dans notre cas, on obtient le résultat suivant.

# exportfs
/home/exports   2001:db8:feb2:10::/64
/home/exports/home
                2001:db8:feb2:10::/64

On peut ainsi vérifier que les directives données dans le fichier /etc/exports sont effectivement appliquées.