3. Mise en œuvre de l'exportation 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.

3.1. Service NFS

Q6.

Comment installer et valider les services commun au client et au serveur NFS ?

Rechercher et installer le paquet puis contrôler la liste des processus et des numéros de port ouverts.

On reprend ici les questions de la partie Gestion des paquets NFS

  • Identification du paquet à installer.

    apt search --names-only ^nfs- | egrep -v '(ganesh|^$)'
    
    WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
    
    En train de trier…
    Recherche en texte intégral…
    nfs-common/testing 1:2.6.3-3 amd64
      fichiers de prise en charge NFS communs au client et au serveur
      NFS server in User Space
    nfs-kernel-server/testing 1:2.6.3-3 amd64
      gestion du serveur NFS du noyau
  • Identification des processus actifs après installation du paquet.

    ps aux | grep [r]pc
    root      4876  0.0  0.0   6872  3180 ?        Ss   20:18   0:00 /sbin/rpcbind -f -w

Q7.

Comment installer et configurer le paquet relatif à l'exportation d'une arborescence avec le protocole NFS ?

On reprend ici les questions de la partie Configuration du serveur NFS

  • Identification du paquet à installer.

    aptitude search '?and(nfs, server)'
    p   nfs-kernel-server - gestion du serveur NFS du noyau
    v   nfs-server
  • Création de l'arborescence d'exportationNFS.

    sudo mkdir -p /home/exports/home
  • Ajout des instructions d'exportation dans le fichier de configuration du serveur NFS : /etc/exports.

    cat << EOF | sudo tee -a /etc/exports
    /home/exports           192.0.2.0/27(rw,sync,fsid=0,crossmnt,no_subtree_check)
    /home/exports/home      192.0.2.0/27(rw,sync,no_subtree_check)
    EOF

Q8.

Comment valider la configuration de l'exportation réalisée par le serveur NFS ?

On reprend la question sur la la commande qui permet d'identifier l'arborescence disponible à l'exportation.

  • Côté client, on utilise la commande showmountsuivie de l'option -e et de l'adresse IP du serveur à interroger.

  • Côté serveur, on utilise la commande exportfs.

3.2. Montage local sur le serveur

Du point de vue métier, l'opérateur du réseau de stockage doit respecter le schéma de nommage qui veut que l'arborescence soit identique entre serveur et client. Dans ce but, réaliser un montage local permet de faire pointer l'arborescence partagée sur un volume de stockage donné. Ce volume de stockage pourra changer au cours du temps tout en respectant le schéma de nommage.

Q9.

Quel est le montage local à mettre en place pour garantir la cohérence du schéma de nommage entre les postes serveur et client ?

On reprend ici la question sur la distinction entre les versions 3 et 4 du protocole NFS et sur le contexte de nommage.

  • Création de la racine commune entre client et serveur.

    sudo mkdir /ahome
  • Montage local entre racine commune et arborescence exportée.

    sudo mount --bind /home/exports/home /ahome

3.3. Création automatique du répertoire utilisateur

Cette étape correspond aux traitements réalisés lors de la toute première utilisation du service par un nouvel utilisateur.

Cette opération se déroule en plusieurs étapes dans la mesure où il est impossible de créer un répertoire utilisateur sur le serveur directement depuis le client.

  1. Activer sur le serveur NFSv4 l'appel au module de création de répertoire utilisateur.

  2. Toute les connexions suivantes depuis un client NFSv4 utiliseront l'arborescence utilisateur créée lors de la première connexion.

[Avertissement] Avertissement

Cette opération suppose que l'on puisse utiliser le service LDAP sur le serveur lui-même. Il faut donc installer et configurer les paquets libnss-ldapd, libpam-ldapd sur le serveur de façon à accéder automatiquement aux ressources de l'annuaire.

Q10.

Comment créer automatiquement l'arborescence d'un utilisateur qui n'existe que dans l'annuaire LDAP ?

Rechercher les fonctions de création automatique de répertoire utilisateur dans la liste des paquets de la distribution.

  1. Sur le serveur, on ajoute le paquet oddjob-mkhomedir puis on complète le fichier commun de gestion de session : /etc/pam.d/common-session.

    $ aptitude search mkhomedir
    v   libpam-mkhomedir   -
    p   oddjob-mkhomedir   - Oddjob helper which creates and populates home directories
    
    <snip>
    $ sudo aptitude install oddjob-mkhomedir
    <snip>
    
    $ systemctl status oddjobd
    <snip>
    $sudo tail -15 /etc/pam.d/common-session
    # pam-auth-update(8) for details.
    
    # here are the per-package modules (the "Primary" block)
    session [default=1]                     pam_permit.so
    # here's the fallback if no module succeeds
    session requisite                       pam_deny.so
    # prime the stack with a positive return value if there isn't one already;
    # this avoids us returning an error just because nothing sets a success code
    # since the modules above will each just jump around
    session required                        pam_permit.so
    # and here are more per-package modules (the "Additional" block)
    session required        pam_unix.so
    session optional        pam_systemd.so
    # end of pam-auth-update config
    session optional        pam_oddjob_mkhomedir.so skel=/etc/skel/ umask=0022
  2. Depuis un poste client différent du serveur, on provoque la création du répertoire utilisateur sur le serveur. Dans l'exemple ci-dessous, on utilise le service SSH pour déclencher la création du répertoire utilisateur ainsi que la copie des fichiers de paramétrage du Shell.

    $ ssh padme@fe80::b8ad:caff:fefe:64%eth0
    padme@fe80::b8ad:caff:fefe:64%eth0's password:
    Creating home directory for padme.
    Linux LDAP-Server 4.12.0-1-686-pae #1 SMP Debian 4.12.6-1 (2017-08-12) i686
    
    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    
    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    padme@LDAP-Server:~$ pwd
    /ahome/padme

    Enfin, on lance une nouvelle connexion sur un client NFS de façon à tester l'automontage du répertoire utilisateur.

    [Avertissement] Avertissement

    La connexion présentée ci-dessous n'est valide que si le service d'automontage fonctionne correctement. Il faut donc avoir traité la section suivante avant de faire ce test : Section 4, « Configuration de l'automontage avec le service LDAP ».

    Sur un client avant connexion la liste des montage fait apparaître l'information suivante :

    $ mount | grep ^ldap
    ldap:ou=auto.home,ou=automount,dc=lab,dc=stri on /ahome type autofs \
    (rw,relatime,fd=7,pgrp=12568,timeout=300,minproto=5,maxproto=5,indirect,pipe_ino=2875248)
    etu@LDAP-Client:~$ su - padme
    Mot de passe :
    padme@LDAP-Client:/home/etu$ cd
    padme@LDAP-Client:~$ pwd
    /ahome/padme
    padme@LDAP-Client:~$ mount | egrep '(ldap|nfs)'
    ldap:ou=auto.home,ou=automount,dc=lab,dc=stri on /ahome type autofs \
                    (rw,relatime,fd=7,pgrp=13510,timeout=300,minproto=5,maxproto=5,
                    indirect,pipe_ino=2891149)
    192.0.2.12:/home/padme on /ahome/padme type nfs4 \
                    (rw,relatime,vers=4.2,rsize=131072,wsize=131072,
                    namlen=255,hard,proto=tcp,timeo=600,
                    retrans=2,sec=sys,clientaddr=192.0.2.25,local_lock=none,
                    addr=192.0.2.12)