La réplication Open Directory peut ne pas fonctionner ; le message « Limite de taille dépassée » s’affiche dans le fichier slapd.log
La réplication Open Directory peut ne pas fonctionner, auquel cas des entrées telles que les suivantes s’affichent dans le fichier /var/log/slapd.log
slapd[209]: do_syncrep2: rid=001 LDAP_RES_SEARCH_RESULT (4) Size limit exceeded slapd[209]: do_syncrep2: rid=001 (4) Size limit exceeded
Ce problème survient si un serveur Open Directory est resté hors service pendant une période prolongée, ou si une réplique est créée alors que la base de données LDAP contient plus de 11 000 objets. Cette valeur correspond, par défaut, au nombre maximal d’objets pouvant être retournés au cours d’une recherche.
Autorisez l’utilisateur _ldap_replicator à ignorer cette limite. Pour ce faire, modifiez la configuration du serveur LDAP sur l’ensemble des serveurs Open Directory, en vous authentifiant en tant qu’administrateur du répertoire et en exécutant des commandes de modification LDAP dans Terminal. Vous devez également être familier de la base de recherche (ou contexte d’appellation) du serveur LDAP.
Procédez comme indiqué ci-dessous.
Identifiez d’abord la base de recherche du serveur LDAP
Identifiez la base de recherche du serveur LDAP. Il s’agit généralement du nom de domaine complet du serveur. La mention dc= est généralement placée avant chaque intitulé et les points sont remplacés par des virgules.
Par exemple, si le nom d’hôte du serveur est serveur.exemple.com, la base de recherche par défaut correspondante est « dc=serveur,dc=exemple,dc=com ». Vous pouvez vérifier la base de recherche en envoyant une requête au serveur LDAP, à l’aide de la commande Terminal ci-dessous :
ldapsearch -x -LLL -b “” -s base namingContexts
La base de recherche s’affiche sur la ligne commençant par « namingContexts », à la suite des deux points (voir exemple de résultat ci-dessous).
dn: namingContexts: dc=server,dc=example,dc=com
Récupérez ensuite les identifiants Kerberos de l’administrateur du répertoire
Par défaut, l’administrateur porte le nom diradmin, mais il est possible que ce dernier ait été modifié lors de la création du maître Open Directory. Cette opération s’effectue à l’aide de la commande kinit dans Terminal. Exécutez la commande ci-dessous, en remplaçant diradmin par le nom réel de l’administrateur (le cas échéant), puis saisissez le mot de passe lorsque vous y êtes invité. Cette commande ne produit aucun résultat.
kinit diradmin
Utilisez ensuite la commande ldapmodify en mode interactif dans Terminal, afin de procéder aux modifications. Exécutez simplement cette commande dans Terminal :
ldapmodify
Remarque : vous obtiendrez alors une courte liste de messages SASL. Patientez jusqu’à l’affichage d’une nouvelle ligne de saisie. Si l’opération réussit, vous obtenez des valeurs SASL similaires à celles ci-dessous :
SASL/GSSAPI authentication started SASL username: diradmin@REALM SASL SSF: 56 SASL data security layer installed.
Modifiez la configuration
La dernière étape consiste à modifier la configuration en saisissant, dans Terminal, l’ensemble du texte ci-dessous en tant qu’entrée de la commande ldapmodify. Vous devez remplacer la mention [search base] ci-dessous par votre base de recherche (sans crochets).
dn: olcDatabase={1}bdb,cn=config changetype: modify add: olcLimits olcLimits: dn.exact="uid=_ldap_replicator,cn=users,[search base]" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited dn: olcDatabase={2}bdb,cn=config changetype: modify add: olcLimits olcLimits: dn.exact="uid=_ldap_replicator,cn=users,[search base]" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited
Appuyez ensuite sur les touches Contrôle + D.
Si l’opération réussit, des messages similaires à ceux ci-après s’affichent.
modifying entry "olcDatabase={1}bdb,cn=config" modifying entry "olcDatabase={2}bdb,cn=config"
Informations supplémentaires
Alternative : utilisation d’un script Shell
Vous trouverez ci-dessous le texte d’un script Shell pouvant être utilisé pour automatiser ce processus. Exécutez simplement la commande kinit en association avec le nom de l’administrateur du répertoire, de la manière décrite ci-dessus, puis exécutez ce script. Consultez cet article pour en savoir plus sur les éditeurs de texte.
#!/bin/sh nc=`ldapsearch -x -LLL -b "" -s base namingContexts | awk '/namingContexts/ {print $2}'` ldapmodify <
Ce document sera mis à jour lorsque de nouveaux renseignements seront disponibles.