6. Intégrer la configuration de l'automontage dans l'annuaire LDAP

Le principe de l'automontage veut que le montage d'une arborescence de système de fichiers réseau se fasse automatiquement et uniquement à l'utilisation. En effet, il n'est pas nécessaire de mobiliser les ressources du protocole NFS tant qu'une arborescence n'est pas effectivement parcourue. Dans le contexte de ce support, il n'est pas nécessaire de monter l'arborescence d'un répertoire utilisateur si celui-ci n'est pas connecté sur le poste client. On optimise ainsi les ressources du système et du réseau.

Du point de vue administration système, il est essentiel que la configuration des postes clients ne soit pas remise en question à chaque évolution du serveur ou à chaque ajout de nouveau compte utilisateur. C'est ici que le service LDAP intervient. Ce service sert à publier la configuration de l'automontage en direction des clients.

Pour appliquer ces principes, cette section doit couvrir les étapes suivantes.

  • Pour compléter les informations publiées par le service LDAP, il faut ajouter un schéma spécifique à la fonction d'automontage, puis importer un fichier de description LDIF contenant les paramètres de configuration à diffuser vers les clients.

  • Pour que le montage des arborescences soit automatique, il faut installer un paquet spécifique sur les systèmes clients et désigner le service LDAP comme fournisseur de la configuration. Cette désignation se fait à l'aide du Name Service Switch.

La principale difficulté dans le traitement des questions suivantes vient du fait qu'il est nécessaire d'échanger des informations entre le client clnt.lab.local et le serveur srvr.lab.local.

Dans le contexte de ce support, le service LDAP et le serveur NFS sont implantés sur le même système srvr.lab.local (la section intitulée « Scénario »).

6.1. Installer le support LDAP pour l'automontage

Q215.

Quel est le paquet de la distribution Debian GNU/Linux qui fournit le service d'automontage via LDAP ?

Recherchez le mot clé automount dans le champ description du catalogue des paquets disponibles.

apt search automount | grep autofs
autofs/stable 5.1.9-1.2+b1 amd64
autofs-hesiod/stable 5.1.9-1.2+b1 amd64
  gestion de la carte Hesiod pour autofs
autofs-ldap/stable 5.1.9-1.2+b1 amd64
  gestion des schémas LDAP pour autofs

Le paquet autofs-ldap correspond au besoin : il dépend directement du paquet autofs, qui fournit le démon automount lui-même. On peut obtenir des informations supplémentaires en consultant sa description complète à l'aide de la commande apt show autofs-ldap.

Q216.

Sur quel type de poste ce paquet doit-il être installé ?

Le service d'automontage est à exécuter sur le poste qui ne détient pas le système de fichiers dans lequel se trouvent les répertoires utilisateur.

Ce paquet doit être installé sur le client clnt.lab.local, puisque le processus automount doit être exécuté sur ce même poste. La dépendance sur le paquet autofs est résolue automatiquement.

sudo apt update -qq
sudo apt install -y --no-install-recommends autofs-ldap

6.2. Publier le schéma autofs dans l'annuaire

Q217.

Quelles sont les informations relatives au service LDAP à transférer entre client et serveur ?

Pour publier la configuration de l'automontage via le service LDAP, il est nécessaire de disposer du schéma de définition des attributs dans l'annuaire. Ce schéma est fourni avec le paquet autofs-ldap installé sur le client, et doit être transféré vers le serveur LDAP pour compléter le catalogue des objets qu'il peut contenir.

dpkg -L autofs-ldap | grep schema
/etc/ldap/schema
/etc/ldap/schema/autofs.schema
scp /etc/ldap/schema/autofs.schema srvr.lab.local:~

Q218.

Dans quel répertoire les informations transférées doivent-elles être placées ?

Recherchez le répertoire de stockage des fichiers de schémas dans l'arborescence du serveur LDAP.

Une fois le fichier de schéma transféré du client vers le serveur, celui-ci doit être placé dans l'arborescence du service LDAP avec les autres fichiers du même type.

sudo install -o root -g root -m 0644 ~/autofs.schema /etc/ldap/schema/
ls -lAh /etc/ldap/schema/autofs.schema
-rw-r--r-- 1 root root 601 sept.  6 18:00 /etc/ldap/schema/autofs.schema

Q219.

Comment intégrer ces nouvelles informations d'automontage dans la configuration du service LDAP ?

L'intégration du nouveau schéma dans la configuration du serveur se fait en plusieurs étapes. Le fichier délivré avec le paquet autofs-ldap doit être converti en fichier LDIF avant d'être ajouté au DIT de configuration du démon slapd.

Le script ci-dessous regroupe, sur le serveur, la conversion du schéma au format LDIF à l'aide de la commande slaptest fournie avec le paquet slapd, sa mise en forme, puis son ajout avec la même authentification SASL/EXTERNAL locale qu'à chaque modification de cn=config (Section 4.2, « Sécuriser les échanges avec TLS et l'authentification SASL/GSSAPI »). Toutes les étapes intermédiaires sont isolées dans un répertoire temporaire, supprimé automatiquement en fin de traitement.

cat << 'SCRIPT_EOF' > publish-autofs-schema.sh
#!/usr/bin/env bash
set -euo pipefail

TMP_DIR=$(mktemp -d)
trap 'rm -rf "${TMP_DIR}"' EXIT

# Répertoire de sortie strictement vide pour slaptest
mkdir -p "${TMP_DIR}/slapd.d"

cat << 'EOF' > "${TMP_DIR}/schema-convert.conf"
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/autofs.schema
EOF

# Conversion vers le sous-répertoire dédié
/usr/sbin/slaptest -f "${TMP_DIR}/schema-convert.conf" -F "${TMP_DIR}/slapd.d"

# Épuration et injection dans cn=config
sed -E \
  -e '/^(structuralObjectClass|entryUUID|creatorsName|createTimestamp|entryCSN|modifiersName|modifyTimestamp):/d' \
  -e 's/dn: cn=\{[0-9]+\}autofs/dn: cn=autofs,cn=schema,cn=config/' \
  -e 's/cn: \{[0-9]+\}autofs/cn: autofs/' \
  "${TMP_DIR}/slapd.d/cn=config/cn=schema/"*autofs.ldif | \
  sudo ldapadd -Y EXTERNAL -H ldapi:///

SCRIPT_EOF

bash publish-autofs-schema.sh
config file testing succeeded
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=autofs,cn=schema,cn=config"

Le motif *autofs.ldif et les expressions rationnelles \{[0-9]+\} évitent de fixer en dur le numéro d'index (cn={3}autofs, par exemple) attribué par slaptest, qui dépend du nombre de schémas déjà chargés dans cn=config.

6.3. Publier la configuration de l'automontage dans l'annuaire

Q220.

Quelle est la syntaxe du fichier de description LDIF contenant la configuration de l'automontage ?

Le fichier de description ci-dessous correspond à l'arborescence suivante.

cat << 'EOF' >ou-autofs.ldif
dn: ou=automount,dc=lab,dc=local
ou: automount
objectClass: top
objectClass: organizationalUnit

dn: ou=auto.master,ou=automount,dc=lab,dc=local
ou: auto.master
objectClass: top
objectClass: automountMap

dn: cn=/ahome,ou=auto.master,ou=automount,dc=lab,dc=local
cn: /ahome
objectClass: top
objectClass: automount
automountInformation: ldap:ou=auto.home,ou=automount,dc=lab,dc=local

dn: ou=auto.home,ou=automount,dc=lab,dc=local
ou: auto.home
objectClass: top
objectClass: automountMap

dn: cn=*,ou=auto.home,ou=automount,dc=lab,dc=local
cn: *
objectClass: top
objectClass: automount
automountInformation: -fstype=nfs4,hard,sec=krb5p,xprtsec=mtls,nosuid,nodev,_netdev nfs-srvr.lab.local:/home/&
EOF

Les options sec=krb5p et xprtsec=mtls reprennent, côté client, les mêmes garanties de sécurité déjà appliquées à l'exportation NFSv4 (Section 5.1, « Configurer l'exportation sur le serveur NFSv4 »).

Q221.

Comment intégrer ces définitions dans l'annuaire LDAP ?

Retrouver la syntaxe de la commande ldapadd qui permet d'insérer de nouvelles entrées dans l'annuaire.

On suit la même démarche que pour l'ajout du schéma : une authentification SASL/EXTERNAL sur la connexion locale ldapi:///, plutôt qu'un bind simple exposant le mot de passe de cn=admin en clair sur la ligne de commande.

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f ou-autofs.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "ou=automount,dc=lab,dc=local"

adding new entry "ou=auto.master,ou=automount,dc=lab,dc=local"

adding new entry "cn=/ahome,ou=auto.master,ou=automount,dc=lab,dc=local"

adding new entry "ou=auto.home,ou=automount,dc=lab,dc=local"

adding new entry "cn=*,ou=auto.home,ou=automount,dc=lab,dc=local"
[Note] Note

Cette unité organisationnelle ou=automount est un nouveau conteneur de premier niveau, au même titre que ou=users, ou=groups et ou=hosts déjà créées (Section 4.3, « Construire l'arbre et peupler l'annuaire »). Elle est donc couverte par les mêmes règles olcAccess (Section 4.1, « Installer et initialiser le service d'annuaire ») : sa lecture exige un bind authentifié, ce qui sera repris lors de la configuration du client (Section 7.1, « Automontage NFS à partir de la configuration publiée par l'annuaire LDAP »).