Haut de page

Configuration de MacOS X (client) dans un environnement LDAP/NFS Linux


Configuration de MacOS X dans un environnement LDAP/NFS Linux

L'environnement décrit ici est une salle d'enseignement composée d'eMac (MacOS X 10.3.5, 10.4.11, 10.5.5) insérés dans un environnement de PC Linux/Windows gérés par des serveurs Linux. L'authentification LDAP est assurée par un serveur Linux et les répertoire de départ des utilisateurs sont sur des serveurs NFS Linux.
La configuration a été aussi utilisée sur des iMac en Mac X 10.6.8, 10.7.5, 10.8.5 et 10.9.

Identification & authentification

Pour l'identification, le serveur LDAP Linux contient les informations de login et mot de passe conforme au RFC 2307.

Choisir LDAPv3 dans les Services de l'Utilitaire Format de répertoire MacOS X 10.4 (Utilitaire d'annuaire (Directory Utility) MacOS X 10.5). (Cet utilitaire est passé dans /System/Library/CoreServices) Cliquer sur Configurer...     Suffixe de la base de recherche (ou=nis-infop6,ou=ARI,dc=ufr-info-p6,dc=jussieu,dc=fr).

Nous choisissons une configuration RFC 2307 (Unix) dont nous allons légèrement modifier le mappage. Voir en annexe le mappage unix proposé sur MacOS X.

   
Dans notre exemple ce serveur s'appelle ldap.ufr-info-p6.jussieu.fr et il gère l'annuaire LDAP de l'UFR d'informatique de Paris 6.

Ne pas sélectionner l'option Utiliser le serveur LDAP fournis par DHCP.
Cliquer sur le bouton Nouveau... et remplir les champs.

Comme le serveur DHCP ne fournit pas le LDAP, il faudra indiquer l'adresse du serveur LDAP dans chaque client avec l'utilitaire Format de répertoire (Directory Access).

Cliquer sur Ok, Modifier... puis Recherche et mappages. Nous allons modifier uniquement les mappage de Users Groups et People pour s'adapter au schéma de la base LDAP suivant :

Users : Dans la recherche de base de Users, nous rajoutons ou=users et nous pouvons faire la recherche qu'au premier niveau. On obtient : ou=users,ou=nis-infop6,ou=ARI,dc=ufr-info-p6,dc=jussieu,dc=fr     Users/RecordName, nous supprimons cn et ne laissons que uid pour l'authentification se fasse par le nom de login et pas par le nom complet.
Groups : Dans la recherche de base de Users, nous rajoutons ou=Groups pour obtenir ou=groups,ou=nis-infop6,ou=ARI,dc=ufr-info-p6,dc=jussieu,dc=fr People, la base de recherche est ou=Personnes,dc=ufr-info-p6,dc=jussieu,dc=fr car les adresses des personnes sont indépendantes des sous-arborescences nis-infop6 et ARI.

Lorsque vous avez enregistré cela, dans Format du répertoire, Authentification, Chemin personnalisé, cliquer sur Ajouter puis choisir la ligne LDAPv3/... et Appliquer.

Configuration TLS_REQCERT pour MacOS 10.5

Lors d'une configuration par défaut de MacOS X 10.4, le fichier /etc/openldap/ldap.conf contient TLS_REQCERT never.

Or à partir de MacOS X 10.5, la configuration par défaut est maintenant TLS_REQCERT demand.

Ce paramètre n'est pas configurable via l'interface graphique. Pour terminer la configuration, nous avons mis en place le certificat :

sudo -s cd /etc/openldap/ mkdir certs chmod og-r certs cd certs/ cp <path>/ldap.certs . chmod o-r ldap.certs

Ce qui donne :

# pwd /etc/openldap/certs # ls -al drwx--x--x 3 root wheel 102 Oct 29 14:32 . -r--r----- 1 root wheel 1371 Oct 29 15:12 ldap.certs

et dans le fichier /etc/openldap/ldap.conf

#TLS_REQCERT demand TLS_CACERT /etc/openldap/certs/ldap.certs TLS_REQCERT allow


Montage de partition 10.3 et 10.4

Contexte

Dans notre cas, le montage nfs ne se fait pas compte par compte mais par groupe de comptes. Ici, par exemple, tous les enseignants.

Pour le moment, la solution choisie marche mais elle n'est pas élégante car les noms des serveurs NFS et les partitions sont dans un fichier de configuration sur chaque machine. Il faudrait réccupérer les informations depuis le serveur LDAP.

Création d'un répertoire nommé 'nfs' dans le dossier Users. et un lien symbolique de /Users/Enseignants -> /Users/nfs/Enseignants

Lancer la commande :

/usr/sbin/automount -f -m /Users/nfs /etc/auto.infop6

Le fichier /etc/auto.infop6 contenant (pour l'instant)

Enseignants -rw,bg,intr nfs2.ufr-info-p6.jussieu.fr:/dsk/users/Enseignants

Chose surprenante, en indiquant que l'ont veut faire un montage de Enseignants dans /Users/nfs, l'automount fait monte la partition dans /private/var/automount/ et fait un lien de /Users/nfs/Enseignants -> /private/var/automount/Enseignants.

Montage automatique au démarrage de la machine

Pour exécuter des commandes au démarrage de la machine, il faut les mettre dans un dossier StartupItems sur un format particulier. Il existe plusieurs dossiers StartupItems :

NFS_LocalNous allons créer un script NFS_Local dans /Library/StartupItems en prenant exemple sur le dossier /System/Library/StartupItems/NFS. Ce script va utiliser le fichier auto.home contenant les partitions à monter. Il faut pour cela créer un dossier NFS_Local contenant un script shell du même nom (NFS_Local), un fichier StartupParameters.plist et éventuellement des répertoires de ressources French.lproj, English.lproj contenant Localizable.strings dans un sous répertoire Resources.

-rwxr-xr-x admin staff NFS_Local drwxr-xr-x admin staff Resources -rw-r--r-- admin staff StartupParameters.plist -rw-r--r-- admin staff auto.home Resources: drwxr-xr-x admin staff English.lproj drwxr-xr-x admin staff French.lproj

Dans notre cas, il n'est pas besoin d'être root pour mettre les fichiers dans /Library/StartupItems.

Le fichier Resources/French.lproj/Localizable.strings suivant permet de traduire les ConsoleMessage "Starting Local NFS" :

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Starting Local NFS</key> <string>Démarrage du NFS Local</string> </dict> </plist>

Le fichier StartupParameters.plist de /System/Library/StartupItems/NFS indique qu'il fournit NFS. Pour notre automount, il faudra donc indiquer que l'on dépends de NFS.

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Description</key> <string>local NFS</string> <key>OrderPreference</key> <string>None</string> <key>Provides</key> <array> <string>Local_NFS</string> </array> <key>Requires</key> <array> <string>NFS</string> </array> <key>Uses</key> <array> <string>Disks</string> </array> </dict> </plist>

Fichier /Library/StartupItems/NFS_Local/NFS_Local

#!/bin/sh ## # Network File System NFS_Local ## . /etc/rc.common StartService () { ConsoleMessage "Starting Local NFS" ## # Start the automounter ## if [ "${AUTOMOUNT:=-YES-}" = "-YES-" ]; then automount -m /Users/nfs /Library/StartupItems/NFS_Local/auto.home fi } StopService () { return 0 } RestartService () { return 0 } RunService "$1"

Comme on le voit, il faut traiter la commande StartService. Le StopService et RestartService n'est pas traité. On ne fait l'automount que si il y a une ligne AUTOMOUNT=-YES- dans le fichier /etc/hostconfig (lui même inclu dans /etc/rc.common).

Dans notre premier exemple, le fichier /Library/StartupItems/NFS_Local/auto.home contient :

Etu0 -rw,hard,intr,nosuid,nodev,rsize=8192,bg fs-etu0.ufr-info-p6.jussieu.fr:/dsk/Etu0 Etu1 -rw,hard,intr,nosuid,nodev,rsize=8192,bg fs-etu1.ufr-info-p6.jussieu.fr:/dsk/Etu1 ...

Le répertoire /Users/nfs est crée automatiquement au démarrage et il contiendra un répertoire home pointant vers /private/var/automount/home.
Attention de ne pas mettre /Users dans la commande automount du fichier NFS_Local sinon tous les utilisateurs locaux du Macintosh disparaîtront. (c'est temporaire, si on corrige ils reviennent, ils étaient simplement cachés).

Voici le résultat de mount en MacOS 10.4

/dev/disk0s2 on / (local, journaled) devfs on /dev (local) fdesc on /dev (union) <volfs> on /.vol automount -nsl [165] on /Network (automounted) automount -fstab [170] on /automount/Servers (automounted) automount -static [170] on /automount/static (automounted) automount /Library/StartupItems/NFS_Local/auto.home [181] on /Users/nfs (automounted) fs-etu2.ufr-info-p6.jussieu.fr:/dsk/Etu2 on /private/var/automount/Etu2 (nodev, nosuid, automounted) fs-etu0.ufr-info-p6.jussieu.fr:/dsk/Etu0 on /private/var/automount/Etu0 (nodev, nosuid, automounted)


Montage automatique NFS via informations LDAP 10.5

Le montage NFS qui fonctionnait jusqu'en 10.4 ne fonctionne plus :
SystemStarter[30]: The following StartupItems were not attempted due to failure of a required service: SystemStarter[30]: /Library/StartupItems/NFS_Local

On utilise la rubrique mounts du LDAP.

Sur le serveur

Dans dc=ari-xmac,dc=infop6,dc=jussieu,dc=fr

rajouter :

pour monter fs-etu0.ufr-info-p6.jussieu.fr:/dsk/Etu0 dans /private/Network/Servers/ari-31-203-xsar.infop6.jussieu.fr/Etu0/

--> cn=fs-etu0.ufr-info-p6.jussieu.fr:\/dsk\/Etu0

Exemple ldif

dn: cn=fs-etu0.ufr-info-p6.jussieu.fr:\/dsk\/Etu0, cn=mounts, dc=ari-xmac,dc=infop6,dc=jussieu,dc=fr mountDirectory: /Network/Servers/ mountOption: net mountType: nfs objectClass: mount objectClass: top cn: fs-etu0.ufr-info-p6.jussieu.fr:/dsk/Etu0

Cela va monter /Network/Servers/fs-etu0.ufr-info-p6.jussieu.fr/dsk/Etu0/
Il faut remettre le lien Etu0 dans /Users/nfs

rm -f /Users/nfs/Etu0 ln -s /Network/Servers/fs-etu0.ufr-info-p6.jussieu.fr/dsk/Etu0 /Users/nfs/Etu0

Sur le client

Le répertoire est monté dans /Network/Servers/ari-31-203-xmac.infop6.jussieu.fr/Volumes/SAR/nfs

Voici le résultat de mount en MacOS 10.5

/dev/disk0s2 on / (hfs, local, journaled) devfs on /dev (devfs, local) fdesc on /dev (fdesc, union) map -hosts on /net (autofs, automounted) map auto_home on /home (autofs, automounted) map -fstab on /Network/Servers (autofs, automounted)

Voir aussi

2004 - Cette page n'aurait pas pu être réalisée sans le travail de Philippe Cadinot, architecte LDAP de l'UFR d'informatique de Paris 6.
2008 Adaptations pour MacOS X 10.5, 2013 complété pour MacOS 10.7, 10.9.



FutureShare

 | 

Glossaire

 |