Montage de home distant avec AutoFS et NFS sur macOS

Cet article explique comment monter le répertoire personnel distant d’un utilisateur, stocké sur un serveur de fichiers NFS GNU/Linux, lors de la connexion sur un poste macOS. Les actions et les tests ont été réalisés sur Sierra (10.12).

Le montage de ce répertoire après la connexion, est automatiquement effectué par Autofs. Pour savoir ce qu’est Autofs et comment il fonctionne, vous pouvez consulter cette documentation.

Il est nécessaire de suivre le précédent article avant de pouvoir effectuer les actions ci-dessous. Il est également conseillé de faire une sauvegarde de l’annuaire, avant les modifications.

Pour commencer, votre annuaire LDAP doit être compatible avec la RFC2307bis (cette RFC n’est pas ratifiée). Il faut donc ajouter le schéma supplémentaire ‘rfc2307bis.schema‘ à votre annuaire OpenLDAP. Il est téléchargeable sur le git officiel de Fedora, via ce lien. Il remplace les schémas ‘autofs.schema’ et ‘nis.schema’.

ATTENTION: l’objet ‘posixGroup’ passe du status ‘STRUCTURAL’ avec RFC2307, à ‘AUXILIARY’ avec RFC2307bis. Vos groupes LDAP ne sont donc plus valides, APRÈS ce changement (vous ne pouvez pas les modifier)! Vous devez recréer ces groupes. L’astuce consiste donc à faire un export LDIF de vos groupes actuels, pour y adosser l’objet ‘namedObject’. Vous pouvez modifier ce LDIF (après sauvegarde). Voici un exemple:

RFC2307:

dn: cn=users,ou=groups,dc=foo,dc=fr
objectClass: posixGroup
objectClass: top
gidNumber: 100
cn: users

RFC2307bis:

dn: cn=users,ou=groups,dc=foo,dc=fr
objectClass: posixGroup
objectClass: namedObject
objectClass: top
gidNumber: 100
cn: users

Ré-importez vos groupes modifiés, dans l’annuaire.

Le schéma RFC2307 est requis pour les objets ‘automount‘ et ‘automountMap‘ qui sont utilisés par défaut, sur les postes macOS. Après cet ajout, assurez vous que l’annuaire fonctionne toujours correctement.

Pour permettre aux clients d’accéder aux informations, telles que les ‘maps‘ ou les ‘automounts‘, Il faut créer la structure requise. Le fichier ‘/etc/auto_master‘ sous Sierra, contient les lignes suivantes:

#
# Automounter master map
#
+auto_master            # Use directory service
/net                    -hosts          -nobrowse,hidefromfinder,nosuid
/home                   auto_home       -nobrowse,hidefromfinder
/Network/Servers        -fstab
/-                      -static

La ligne +auto_master # Use directory service signifie que l’objet automountMapName=auto_master va être recherché dans le LDAP. Il est parfaitement possible de nommer l’objet ‘automountMap' comme vous le désirez, mais rester sur la valeur par défaut permet d’éviter un changement supplémentaire sur tous les postes macOS de votre parc. Dans notre cas, nous utiliserons donc la valeur automountMapName=auto_master.

Notre structure LDAP aura la forme suivante:

+-+ dc=foo,dc=fr
  +-+ ou=autofs
    +-+ automountMapName=auto_master
    | --- automountKey=/users/foo
    +-+ automountMapName=auto.foo
      --- automountKey=*
dn: automountMapName=auto_master,ou=autofs,dc=foo,dc=fr
objectClass: top
objectClass: automountMap
automountMapName: auto_master
 
dn: automountKey=/users/foo,automountMapName=auto_master,ou=autofs,dc=foo,dc=fr
objectClass: top
objectClass: automount
automountInformation: auto.foo
automountKey: /users/foo
 
dn: automountMapName=auto.foo,ou=autofs,dc=foo,dc=fr
objectClass: top
objectClass: automountMap
automountMapName: auto.foo
 
dn: automountKey=*,automountMapName=auto.foo,ou=autofs,dc=foo,dc=fr
objectClass: top
objectClass: automount
automountInformation: -fstype=nfs,rw,resvport nfsserver.foo.fr:/srv/foo/&
automountKey: *

Comme je l’ai expliqué dans le paragraphe précédent, automountMapName=auto_master est équivalent au fichier ‘/etc/auto_master‘ local. Nous définissons ensuite le répertoire de montage (ou point de montage) via l’objet ‘automount‘, avec automountKey=/users/foo. Ainsi, le répertoire personnel des utilisateurs sera monté dans ‘/users/foo‘ (‘/users/foo/pignon‘, par exemple). ATTENTION: la valeur de l’attribut automountKey doit être en accord avec la valeur de l’attribut homeDirectory de l’utilisateur! Par exemple, si automountKey vaut /users/foo et homeDirectory de l’utilisateur ‘pignon’ est /home, cela peut engendrer des problèmes.

L’attribut automountInformation: auto.foo permet de déclarer que les options liées au montage seront stockées dans automountMapName=auto.foo. Les options de cette « map » sont par conséquent placées dans le DN automountKey=*. Le symbole ‘*‘ correspond à une « wild-card entry » (cf autofs(5)), cela nous évite donc de devoir ajouter une « map » différente pour chaque utilisateur qui va se connecter. Les paramètres de votre montage (ici NFS) sont ensuite stockés dans l’attribut automountInformation.

Examinons ensemble la valeur de cet attribut: -fstype=nfs,rw,resvport contient les options du montage. Nous précisons que c’est un montage de type NFS, monté en lecture/écriture suivi de resvport, pour que le client utilise un port privilégié (<1024). Les postes macOS ont BESOIN de cette option (voici l’explication). Si vous oubliez cette option, le montage ne se fera pas et vous aurez bien des soucis à comprendre le pourquoi du comment (cela a été mon cas)!

La seconde partie de la valeur de l’attribut est nfsserver.foo.fr:/srv/foo/&. Comme vous vous en doutez, c’est tout simplement le nom d’hôte du serveur de fichiers NFS, avec le répertoire contenant les partages NFS. Le symbole ‘&‘ est primordial car il sera remplacé par le login de l’utilisateur et correspondra donc au répertoire personnel stocké sur le serveur.

La partie serveur OpenLDAP est maintenant terminée.

Lorsque l’annuaire est « conforme », allez sur le client macOS et lancez ‘Préférences Système‘, en cliquant sur la pomme, en haut à gauche de l’écran. Ensuite, sélectionnez ‘Utilisateurs et groupes‘, au bas de l’écran, suivi de ‘Options‘ et ‘Rejoindre…‘. Le mot de passe administrateur sera requis.

Cliquez sur ‘Ouvrir Utilitaire d’annuaire…‘. Avant de pouvoir modifier les paramètres, vous devrez saisir une nouvelle fois le mot de passe administrateur. Choisir ‘LDAPv3‘ dans l’onglet ‘Services‘ et cliquez sur le crayon:

Il est maintenant nécessaire de modifier la configuration de l’annuaire cible. Cliquez sur ce dernier dans la liste, suivi de ‘Modifier…‘. Vous devez vous déplacer vers l’onglet ‘Recherche et mappages‘ et modifier la base de recherche de ‘Automount‘, ici ‘ou=autofs,dc=foo,dc=fr‘:

Procédez de la même manière pour ‘AutomountMap‘. Si la structure de votre LDAP est différente, adaptez la base de recherche en conséquence:

Validez vos changements en cliquant sur ‘OK‘. Vous pouvez vérifier que vous accédez aux « maps » LDAP. Pour ce faire, sélectionnez ‘Editeur de répertoire‘ dans ‘Utilitaire d’annuaire‘. Après avoir choisi le nœud correspondant au LDAP, qui doit commencer par /LDAPv3/, suivi de l’adresse précédemment défini (dans notre cas ‘/LDAPv3/ldap.foo.fr‘), vérifiez ‘Automount‘ et ‘AutomountMap‘ via la liste déroulante ‘Présentation‘, . Si vous n’avez pas fait d’erreur, les maps doivent être correctement listés. Si vous ajoutez un réplicat LDAP, les « maps » seront listées en double.

Relancez la commande suivante pour associer les points de montage à Autofs:

automount -vc

Vous devriez obtenir la sortie suivante:

automount: /Users/foo updated
automount: /net updated
automount: /home updated

Vous avez enfin réussi! J’ai préféré effectuer un petit redémarrage, même si ce n’est pas forcément nécessaire. Essayez de vous connecter. Si ça fonctionne, macOS vous demandera de faire quelques réglages, lors de la première connexion (comme pour Siri). Vous devriez retrouver vos documents et fichiers. Il est aussi possible de vérifier l’emplacement de votre répertoire utilisateur. Avec l’application ‘Terminal‘, lancez:

pwd

Si la sortie est identique à la valeur de l’attribut homeDirectory, tout est OK. Vous pouvez donc aller boire une coupe de champagne.

Cette solution avec RFC2307bis est également parfaitement utilisable avec des postes GNU/Linux. Vous avez deux possibilités: si vous aviez auparavant modifié le fichier ‘/etc/default/autofs‘ pour définir le schema LDAP correspondant, vous pouvez commenter toutes les lignes (Autofs testera alors tous les schémas) ou seulement décommenter les lignes suivantes pour éviter des requêtes supplémentaires:

#
# Other common LDAP nameing
#
MAP_OBJECT_CLASS="automountMap"
ENTRY_OBJECT_CLASS="automount"
MAP_ATTRIBUTE="automountMapName"
ENTRY_ATTRIBUTE="automountKey"
VALUE_ATTRIBUTE="automountInformation"

Et voilà, vous gérez vos postes macOS presque comme vos postes GNU/Linux.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *