LDAP/NFS avec serveur Linux et clients Mac OS X

Configuration du serveur Linux

Paquets et versions

La version de linux est une Debian stable (5.0).

Il est déconseillé d’avoir un nom de domaine en .local. Il faut mieux avoir par exemple pour un réseau local: localnet ou lan. Car .local est réservé par mDNSResponder sous OS X (qui l’utilise pour générer dynamiquement des domaines locaux).

Les paquets à récuperer sont:

  • slapd, ldap-utils
  • migrations-tools
  • dhcpd (dhcp3-common, dhcp3-server)
apt-get install slapd ldap-utils migrationtools dhcp3-common dhcp3-server

Lors de l’installation la configuration de slapd est standard, il n’y a pas besoin de la compatibilité LDAPv2. Au cas où on rate la configuration on peut la refaire avec:

dpkg-reconfigure slapd

Pour ajuster finement la base LDAP, on peut utiliser un outil comme phpldapadmin, qui fonctionne avec un serveur Web (apache2). Dans ce cas, c’est le paquet phpldapadmin et ses dépendances qui faut installer. Il faudra aussi configurer le serveur Web pour lancer l’outil.

 

Configuration de DHCP

Le DHCP permet aux clients de connaître les noms des serveurs pour les différents services.

Voici une partie du contenu du fichier /etc/dhcp3/dhcpd.conf

option ldap-server code 95 = string;

subnet 192.168.1.0 netmask 255.255.255.0 {
  deny client-updates;

  option domain-name "exemple.lan";
  option domain-name-servers ns.exemple.lan;
  option ntp-servers time.exemple.lan;
  option time-offset 0;
  option nis-domain exemple;
  option nis-servers yp.exemple.lan;
  option log-servers log.exemple.lan;
  option routers gw.exemple.lan;
  option ldap-server "ldap://ldap.exemple.lan/dc=exemple,dc=lan";

  # Unknown clients get this pool.
  pool {
    max-lease-time 300;
    range 192.168.1.16 192.168.1.18;
    allow unknown-clients;
  }

  pool {
    max-lease-time 172800;
    range 192.168.1.19;
    deny unknown-clients;
  }
}
group {
    use-host-decl-names on;
    host mac1.exemple.lan { fixed-address mac1.exemple.lan; hardware ethernet 00:12:34:56:78:90; }
}

Sont déclarés aussi des informations NIS (nis-domain, nis-server), LOG (log-servers), NTP (ntp-servers, time-offset), qui sont optionnelles.

Les pools, permettent d’attribuer aux clients non reconnus une adresse entre 192.168.1.16 et 192.168.1.18. Ceux qui sont connus auront leur adresse.

 

Configuration de LDAP

Configuration du deamon slapd

Ajouter dans /etc/ldap/slapd.conf:

include         /etc/ldap/schema/samba.schema
include         /etc/ldap/schema/apple.schema

Et plus loin:

index           uid,sn,cn,gidNumber,uidNumber,memberUid eq

Remplissage de la base LDAP

Indexation de la base LDAP

Nécessaire pour avoir les index précalcules pour les recherches dans la base.

/etc/init.d/slapd stop
slapindex
chown -R openldap.openldap /var/lib/ldap/*
/etc/init.d/slapd start

 

Configuration du NFS

On suppose que NFS est déja installé et fonctionnel (sinon voir cet article sur l’intégration NIS/NFS).

Notes: Le disque a partager devra avoir les options suivantes (dans /etc/fstab): acl,user_xattr

Pour accelérer les accès on peut rajouter: noatime,nodiratime

 

Configuration des clients Mac OS X

Après quelques années d’utilisation de NFS sous OS X, il y a quelques désagréments:

– Certains programmes ne peuvent enregistrer les documents (il faut faire « Enregistrer sous » à la place).

– Impossible d’installer certains programmes (il faut déplacer l’installateur sous un disque OS X).

– Impossible de dé-zipper

– Nombreux ralentissements réguliers

– Les alias ne fonctionnent pas

– …

Je suis passé sous Netatalk, et on n’a plus ces problèmes (enfin pas tous: par exemple on ne peut toujours pas dé-zipper).

Bug de Mac OS X Lion

Il y a eu un changement dans la configuration de LDAP pour Mac OS X Lion.

Les mots de passe LDAP ne sont plus reconnus.

Il faut entrer:

sudo su 
/usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string CRAM-MD5" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/yourldapserver.plist
/usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string NTLM" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/yourldapserver.plist
/usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string GSSAPI" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/yourldapserver.plist