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.
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. 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 :
Lorsque vous avez enregistré cela, dans Format du répertoire, Authentification, Chemin personnalisé, cliquer sur Ajouter puis choisir la ligne LDAPv3/... et Appliquer.
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
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.
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 :
Nous 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)
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.
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
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)
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.
|