6. Configurer le client NFS

Le rôle du client est d'intégrer un accès au système de fichiers d'un hôte distant dans son arborescence locale. On parle de « montage NFS ». Dans un premier temps, on teste les opérations de montage manuel. Ces tests ne peuvent bien sûr aboutir que si une arborescence a été exportée par un serveur.

Ensuite, on teste les opérations de montage automatisées, ou automontage avec le service autofs.

[Avertissement] Avertissement

Attention ! Les montages manuels et les automontages ne sont pas compatibles Assurez-vous d'avoir libéré tous les montages statiques avant de démarrer le service autofs.

6.1. Tester les montages/démontages manuels NFS

Q74.

Quelle est la commande qui permet de tester la disponibilité du service de montage NFS sur un client distant ?

Reprenez la commande qui affiche les listes des procédures distantes disponibles. Elle a été utilisée dans la section Section 4, « Configurer les fonctions communes au client et au serveur NFS ».

Affichez la liste des procédures disponibles sur le serveur depuis le client NFS.

rpcinfo -s fe80::baad:caff:fefe:5
   program version(s) netid(s)                         service     owner
    100000  2,3,4     local,udp,tcp,udp6,tcp6          portmapper  superuser
    100024  1         tcp6,udp6,tcp,udp                status      104
    100005  3,2,1     tcp6,udp6,tcp,udp                mountd      superuser
    100003  4,3       tcp6,tcp                         nfs         superuser
    100227  3         tcp6,tcp                         nfs_acl     superuser
    100021  4,3,1     tcp6,udp6,tcp,udp                nlockmgr    superuser

Relativement aux résultats obtenus dans la section Section 4, « Configurer les fonctions communes au client et au serveur NFS », la liste des services accessibles via RPC sur le serveur NFS s'est étoffée et le service de montage mountd apparaît clairement.

Q75.

Quelle est la commande qui permet d'afficher l'arborescence disponible à l'exportation depuis le serveur NFS ?

Recherchez la commande dans la liste des commandes du paquet de service NFS commun au client et au serveur.

Recherchez l'option de cette commande qui affiche la liste des exportations.

Affichez la liste des commandes du paquet nfs-common et identifiez celles qui sont relatives aux montages.

dpkg -L nfs-common | egrep 'bin.*mount'
/usr/sbin/mount.nfs
/usr/sbin/mountstats
/usr/sbin/showmount
/usr/sbin/mount.nfs4
/usr/sbin/umount.nfs
/usr/sbin/umount.nfs4

Recherchez dans les pages de manuels de la commande showmount, l'option qui permet d'obtenir la liste des exportations.

sudo showmount -e fe80::baad:caff:fefe:5
Export list for fe80::baad:caff:fefe:5:
/home/exports/home 2001:678:3fc:65::/64,172.28.101.0/24
/home/exports      2001:678:3fc:65::/64,172.28.101.0/24

Les résultats affichés par la commande showmount avec l'option -e supposent que le serveur NFS a déjà été configuré pour exporter le dossier /home.

Q76.

Quelle est la commande à utiliser pour les opérations de montage manuel ? À quel paquet appartient cette commande ? Cette commande est-elle exclusivement liée au protocole NFS ?

consultez le support Linux NFS-HOWTO, interrogez la base de données des paquets et recherchez dans les listes de fichiers fournis avec de paquet choisi.

Recherchez les exemples d'utilisation de la commande mount dans la documentation Linux NFS-HOWTO.

Recherchez ensuite cette commande dans la liste des noms de paquets de la distribution.

apt search --names-only ^mount$
mount/testing,now 2.41.1-3 amd64 [installé]
  outils pour monter et manipuler des systèmes de fichiers

Le paquet est déjà installé. Listez les commandes liées au montage.

dpkg -L mount | grep 'bin.*mount'
/usr/bin/mount
/usr/bin/umount

Consultez les pages de manuels de la commande : man mount.

La commande mount traite l'ensemble des opérations de montage pour tous les systèmes de fichiers disponibles sur le système, dont NFS.

Q77.

Comment réaliser un montage manuel de l'arborescence du serveur NFS dans le répertoire /ahome du client ?

Créez le répertoire /ahome.

Recherchez dans le document Linux NFS-HOWTO la syntaxe de la commande de montage manuel.

Lancez la commande de montage et affichez les propriétés de ce montage.

Créez le répertoire /ahome :

sudo mkdir /ahome

Montez l'arborescence du serveur dans ce dossier après avoir ajouté l'adresse et le nom de ce serveur dans le fichier /etc/hosts.

echo "2001:678:3fc:65:baad:caff:fefe:5 nfs-server" | \
    sudo tee -a /etc/hosts
sudo mount nfs-server:/home /ahome

Affichez les propriétés du montage.

mount | grep nfs
nfs-server:/home on /ahome type nfs4
    (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,fatal_neterrors=none,proto=tcp6,
    timeo=600,retrans=2,sec=sys,clientaddr=2001:678:3fc:65:baad:caff:fefe:6,
    local_lock=none,addr=2001:678:3fc:65:baad:caff:fefe:5)

Repérez les adresses du client et du serveur dans la copie d'écran ci-dessus.

Dans l'exemple ci-dessus :

  • Adresse du serveur : 2001:678:3fc:65:baad:caff:fefe:5

  • Adresse du client : 2001:678:3fc:65:baad:caff:fefe:6

Voici une interprétation résumée des propriétés du montage.

  • Il s'agit d'un montage NFSv4.2 en lecture/écriture utilisant IPv6, optimisé à la fois pour la compatibilité et la vitesse, avec des tailles de tampon importantes.

  • L'option hard indique que les applications seront mises en attente plutôt que d'échouer si le serveur NFS devient temporairement inaccessible.

  • La sécurité repose sur les identifiants utilisateur du système local, et non sur un cryptage ou une authentification.

  • La taille du tampon de lecture/écriture (131 072 octets) vise à obtenir un débit optimal.

  • L'utilisation de l'option local_lock=none peut avoir un impact sur les applications nécessitant le verrouillage de fichiers.

Q78.

Comment lancer une capture de trafic avec tshark sur le serveur avant d'exécuter la commande ls -lAh /ahome sur le client ?

Comment interpréter les informations capturées ?

  1. Lancez la capture de trafic côté serveur NFS.

    tshark -i enp0s1 -f "host 2001:678:3fc:65:baad:caff:fefe:6" -w nfs-list.pcap

    L'adresse d'hôte sélectionnée est celle du client NFS.

  2. Exécutez la commande ls -lAh /ahome côté client NFS.

  3. Arrêtez la capture côté serveur avec Ctrl+C.

Affichez la liste des trames capturées.

tshark -r nfs-list.pcap
1 0.000000000 2001:678:3fc:65:baad:caff:fefe:6 → 2001:678:3fc:65:baad:caff:fefe:5 NFS 258 V4 Call GETATTR FH: 0xcd09674b
2 0.001127472 2001:678:3fc:65:baad:caff:fefe:5 → 2001:678:3fc:65:baad:caff:fefe:6 NFS 330 V4 Reply (Call In 1) GETATTR
3 0.001849966 2001:678:3fc:65:baad:caff:fefe:6 → 2001:678:3fc:65:baad:caff:fefe:5 TCP 86 677 → 2049 [ACK] Seq=173 Ack=245 Win=501 Len=0 TSval=2629983171 TSecr=2710409161
4 0.002436129 2001:678:3fc:65:baad:caff:fefe:6 → 2001:678:3fc:65:baad:caff:fefe:5 NFS 258 V4 Call GETATTR FH: 0xcd09674b
5 0.002549903 2001:678:3fc:65:baad:caff:fefe:5 → 2001:678:3fc:65:baad:caff:fefe:6 NFS 330 V4 Reply (Call In 4) GETATTR
6 0.002889220 2001:678:3fc:65:baad:caff:fefe:6 → 2001:678:3fc:65:baad:caff:fefe:5 NFS 258 V4 Call GETATTR FH: 0x8854dd26
7 0.002962282 2001:678:3fc:65:baad:caff:fefe:5 → 2001:678:3fc:65:baad:caff:fefe:6 NFS 330 V4 Reply (Call In 6) GETATTR
8 0.044790234 2001:678:3fc:65:baad:caff:fefe:6 → 2001:678:3fc:65:baad:caff:fefe:5 TCP 86 677 → 2049 [ACK] Seq=517 Ack=733 Win=501 Len=0 TSval=2629983214 TSecr=2710409163

Interprétiez les transactions NFS :

  • L'opération GETATTR apparaît plusieurs fois.

    Ce comportement du client NFS est caractéristique lorsque la mise en cache des attributs est minimisée. En effet, la commande ls -lAh /ahome requiert des données à jour.

  • L'appel GETATTR NFS v4 permet de demander les attributs d'un fichier ou d'un répertoire.

  • La réponse GETATTR NFS v4 contient les attributs demandés.

Notez qu'il est possible d'afficher tous les détails d'une trame capturée. Voici un exemple pour la trame numéro 5.

tshark -r nfs-list.pcap -Y "frame.number == 5" -V

Q79.

Quelles seraient les opérations à effectuer pour rendre le montage NFS statique permanent ?

Recherchez le fichier de configuration système responsable des montages statiques des partitions.

Il est inutile de modifier le fichier de configuration du système sachant que l'on change de méthode de montage dans la section suivante.

Il faudrait éditer le fichier /etc/fstab pour effectuer un montage statique à chaque initialisation du système. Voici un exemple de ligne à insérer à la fin du fichier.

nfs-server:/home   /ahome   nfs4    0   0

Q80.

Quelle est la commande à utiliser pour démonter le dossier /ahome ?

Recherchez cette commande dans la liste des outils fournis avec le paquet mount.

Utilisez la commande umount pour « détacher » un dispositif de stockage du système de fichiers.

sudo umount /ahome
mount | grep nfs

Cette dernière commande ne produit aucun résultat. Il n'y a plus de montage NFS sur le client.

6.2. Créer un compte utilisateur sur le client NFS

Comme il n'existe pas de gestion centralisée des identités pour les manipulations de ce support de travaux pratiques, on utilise un artifice permettant de faire correspondre les identifiants UID/GID entre le client et le serveur NFS : la création de deux comptes utilisateurs ayant les mêmes valeurs pour ces identifiants.

On a déjà créé le compte utilisateur sur le serveur. Voir la Section 5.3, « Créer un compte utilisateur sur le serveur ». À la suite de cette création de compte, on a relevé les attributs suivants :

etu-nfs:x:1002:1002:NFS user,,,:/ahome/etu-nfs:/bin/bash

Il s'agit maintenant de réaliser l'opération symétrique sur le client.

Q81.

Comment créer un compte utilisateur local baptisé etu-nfs avec un répertoire utilisateur situé sous la racine /ahome dont les fichiers et répertoires sont placés sur le serveur NFS ?

Consultez les pages de manuels de la commande adduser et recherchez les options relatives au répertoire utilisateur.

Les deux options utiles pour traiter la question sont --home qui permet de désigner le répertoire utilisateur dans l'arborescence système et --no-create-home qui évite la création de ce répertoire sur le système local.

sudo adduser --no-create-home --home /ahome/etu-nfs etu-nfs
warn: The home dir /ahome/etu-nfs you specified can't be accessed: No such file or directory

Nouveau mot de passe :
Retapez le nouveau mot de passe :
passwd : mot de passe mis à jour avec succès
Modifier les informations associées à un utilisateur pour etu-nfs
Entrer la nouvelle valeur, ou appuyer sur ENTER pour la valeur par défaut
        NOM []: Etudiant NFS
        Numéro de chambre []:
        Téléphone professionnel []:
        Téléphone personnel []:
        Autre []:
Is the information correct? [Y/n]

Vérifiez que les identifiants UID/GID ont les mêmes valeurs que pour le compte créé sur le serveur.

getent passwd etu-nfs
etu-nfs:x:1002:1002:Etudiant NFS,,,:/ahome/etu-nfs:/bin/bash

Notez que les chemins qui désignent les répertoires utilisateurs des deux comptes sont aussi identiques. Le schéma de nommage entre client et serveur est cohérent.

Les identifiants numériques UID/GID jouent un rôle important dans la suite des manipulations. Voir Section 7, « Gérer les droits sur le système de fichiers NFS ».

6.3. Automatiser les montages/démontage NFS avec autofs

Dans cette section, nous reprenons le processus de montage précédent en utilisant le service d'automontage. L'objectif est de rendre les opérations d'accès au système de fichiers réseau totalement transparentes pour l'utilisateur ; le montage manuel doit donc être évité autant que possible.

Plusieurs implémentations de ce service sont disponibles. Nous nous limiterons ici au logiciel utilisant les fonctions du noyau Linux.

Q82.

Quel est le paquet qui correspond au service d'automontage associé au noyau ?

Recherchez les mots clé automount et noyau dans les descriptions du gestionnaire de paquets.

Installez le paquet identifié.

apt -o "Apt::Cmd::Disable-Script-Warning=1" \
  search automount noyau | cat
En train de trier…
Recherche en texte intégral…
autodir/testing 0.99.9-18+b1 amd64
  crée automatiquement les répertoires home et group pour les comptes LDAP/NIS/SQL et locaux

autofs/testing 5.1.9-1.2+b2 amd64
  montage automatique pour Linux basé sur le noyau

autofs-hesiod/testing 5.1.9-1.2+b2 amd64
  gestion de la carte Hesiod pour autofs

autofs-ldap/testing 5.1.9-1.2+b2 amd64
  gestion des schémas LDAP pour autofs

Installez le paquet autofs.

sudo apt -y install autofs

Q83.

Quels sont les fichiers de configuration du service d'automontage à éditer ou créer pour que l'utilisateur etu-nfs ait accès à ses données personnelles ?

Utilisez la catégorie 5 des pages de manuels du service autofs pour obtenir des exemples de configuration.

man 5 autofs

Consultez aussi la page du fichier principal de configuration du service :/etc/auto.master.

man auto.master

Le montage indirect avec autofs consiste à créer un point de montage parent (par exemple /ahome), sous lequel chaque sous-répertoire demandé (par exemple /ahome/etu-nfs) est monté dynamiquement à la demande. Cette approche centralise la gestion des accès tout en restant flexible pour de nombreux partages. Dans notre contexte, les partages correspondent aux répertoires utilisateurs.

Définissez la racine de montage /ahome dans un fichier de configuration placé dans le dossier /etc/auto.master.d/. Cette racine de montage pointe vers le fichier de configuration dédié au montage automatique des répertoires des utilisateurs.

  1. Créez le fichier /etc/auto.master.d/ahome.autofs.

    echo "/ahome  /etc/auto.home" | \
    sudo tee /etc/auto.master.d/ahome.autofs
  2. Créez le fichier /etc/auto.home contenant les attributs des montages dynamiques. Ce fichier utilise une syntaxe particulière permettant de monter le système de fichiers du serveur de manière générique, quel que soit le nombre de comptes utilisateurs.

    echo "*    -fstype=nfs4,hard    nfs-server:/home/&" | \
    sudo tee /etc/auto.home
    • Le symbole * qui se substitue au nom d'utilisateur : etu-nfs dans notre exemple.

    • Le paramètre -fstype=nfs4 correspond à une option de montage qui privilégie la version 4 du protocole NFS.

    • Le paramètre hard évite la perte de données en cas de déconnexion.

    • Le nom nfs-server correspond à l'adresse IP enregistrée dans le fichier /etc/hosts.

    • Le répertoire /home/ correspond à l'exportation NFS sur le serveur. Le répertoire /home/ est situé sous la racine d'exportation qui est uniquement connue du serveur.

    • Le symbole & indique la répétition du premier paramètre : le nom d'utilisateur.

  3. Redémarrez le service pour prendre en compte les nouveaux fichiers de configuration.

    sudo systemctl restart autofs

    Vérifiez l'état du service.

    systemctl status autofs
    ● autofs.service - Automounts filesystems on demand
         Loaded: loaded (/usr/lib/systemd/system/autofs.service; enabled; preset: enabled)
         Active: active (running) since Tue 2025-09-16 15:35:47 CEST; 12min ago
     Invocation: ef692b3649d94f6886ae130452e62ffd
           Docs: man:autofs(8)
        Process: 10230 ExecStart=/usr/sbin/automount $OPTIONS --pid-file /var/run/autofs.pid (code=exited, status=0/SUCCESS)
       Main PID: 10231 (automount)
          Tasks: 5 (limit: 973)
         Memory: 2.4M (peak: 3.5M)
            CPU: 81ms
         CGroup: /system.slice/autofs.service
                 └─10231 /usr/sbin/automount --pid-file /var/run/autofs.pid
    
    sept. 16 15:35:47 clnt systemd[1]: Starting autofs.service - Automounts filesystems on demand...
    sept. 16 15:35:47 clnt (utomount)[10230]: autofs.service: Referenced but unset environment variable evaluates to an empty string: OPTIONS
    sept. 16 15:35:47 clnt systemd[1]: Started autofs.service - Automounts filesystems on demand.

    Le service est actif et aucune erreur de syntaxe n'a été détectée dans ses fichiers de configuration.

Q84.

Quelles sont les conditions à respecter sur le client et le serveur NFS pour que l'utilisateur etu-nfs ait la capacité à écrire dans son répertoire personnel ?

Recherchez les attributs d'un compte utilisateur qui correspondent aux propriétés des objets d'un système de fichiers au sens général.

getent passwd etu-nfs
etu-nfs:x:1002:1002:Etudiant NFS,,,:/ahome/etu-nfs:/bin/bash

Les identifiants numériques UID/GID doivent nécessairement être identiques sur le client et le serveur NFS. Toute la gestion des droits sur le système de fichiers en dépend.

Q85.

Comment valider le fonctionnement du service de montage dynamique des répertoires utilisateurs ?

Recherchez le moyen d'ouvrir une session avec l'identité de l'utilisateur etu-nfs pour utiliser son répertoire /ahome/etu-nfs/.

Vérifiez que le montage NFS est bien utilisé avec les commandes mount et df par exemple.

Comme lors du test effectué côté serveur, utilisez l'une des deux commandes suivantes pour prendre l'identité de l'utilisateur etu-nfs.

  • sudo login

  • su - etu-nfs

Prenez l'identité de l'utilisateur etu-nfs.

su - etu-nfs
Mot de passe :
etu-nfs@clnt:~$

Vérifiez que le répertoire courant est bien celui de l'utilisateur.

pwd
/ahome/etu-nfs

Affichez les propriétés du montage NFS.

mount | grep nfs
nfs-server:/home/etu-nfs on /ahome/etu-nfs type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,
    namlen=255,hard,fatal_neterrors=none,proto=tcp6,timeo=600,retrans=2,sec=sys,
    clientaddr=2001:678:3fc:65:baad:caff:fefe:6,local_lock=none,addr=2001:678:3fc:65:baad:caff:fefe:5)

Affichez les informations sur l'espace de stockage disponible.

df -hT | grep nfs
nfs-server:/home/etu-nfs nfs4       118G    3,3G  109G   3% /ahome/etu-nfs