Table des matières

, , , , , , , , , , , ,

LDAP

Obtenir la liste des suffixes disponibles sur un serveur LDAP

Pour btenir la liste des suffixes disponibles sur un serveur LDAP :

ldapsearch -xLL -h ldap.mondomaine.com -b "" -s base "objectclass=*" "cn=SubSchema" +

qui devrait vous renvoyer un résultat similaire à :

...
namingContexts: dc=local
...

Utiliser ses credentials UNIX(Linux) pour effectuer une recherche LDAP

Pour ne pas avoir à retaper ses credentials, on peut se connecter au serveur LDAP via le socket UNIX :

L’intérêt de cette méthode est par exemple d'effectuer des modifications sur le cn=config sans avoir défini d'utilisateur ni ACLs pour y accéder : il suffit alors d'être root sur la machine locale en lançant les commandes de modification : on est alors root sur le LDAP :-)

Jouer avec les index de son LDAP

On va utiliser l’authentification par socket ci dessus pour jour avec les index de son annuaire LDAP.

Noter bien sur que comme tout index de base plus on en à plus l'utilisation mémoire est forte et plus les requêtes d'update sont coûteuses : a vous d'estimer quel(s) index sont utiles/nécessaires car tout de même les requêtes en lecture utilisant les index seront bien plus rapides :-)

On pourra ainsi se débarrasser des messages de warning type :

slapd[1482]: <= bdb_equality_candidates: (uidNumber) not indexed"

Lister les index actuels

On va utilise rla commande ldapsearch en se connectant en root sur le socket qui-va-bien :

# ldapsearch -LLL -Y EXTERNAL -H ldapi://%2fvar%2frun%2fslapd%2fldapi -b "olcDatabase={1}hdb,cn=config" olcDbIndex

qiu devrait vous retourner quelque chose comme :

# ldapsearch -LLL -Y EXTERNAL -H ldapi://%2fvar%2frun%2fslapd%2fldapi -b "olcDatabase={1}hdb,cn=config" olcDbIndex
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: olcDatabase={1}hdb,cn=config
olcDbIndex: objectClass eq
olcDbIndex: entryUUID eq
olcDbIndex: entryCSN eq
olcDbIndex: cn eq
olcDbIndex: uid eq

Si vous estimez qu'il en manque on peut en rajouter : je vais par exemple rajouter des index d'egalité sur uidNumber et gidNumber

Ajouter de nouveaux index

on va utiliser ldapmodify en root qui nous donne un shell :

# ldapmodify -Y EXTERNAL -H ldapi://%2fvar%2frun%2fslapd%2fldapi 

la syntaxe ldapmodify est la suivante :

Voici donc la transcription complète de cet ajout d'index :

# ldapmodify -Y EXTERNAL -H ldapi://%2fvar%2frun%2fslapd%2fldapi
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: olcDatabase={1}hdb,cn=config
add: olcDbIndex
olcDbIndex: uidNumber eq
olcDbIndex: gidNumber eq

modifying entry "olcDatabase={1}hdb,cn=config"

^C

La requête de listage des index ci dessus devrait donc nous montrer cet ajout, il suffit de le vérifier :-)

# ldapsearch -LLL -Y EXTERNAL -H ldapi://%2fvar%2frun%2fslapd%2fldapi -b "olcDatabase={1}hdb,cn=config" olcDbIndex
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: olcDatabase={1}hdb,cn=config
olcDbIndex: objectClass eq
olcDbIndex: entryUUID eq
olcDbIndex: entryCSN eq
olcDbIndex: cn eq
olcDbIndex: uid eq
olcDbIndex: uidNumber eq
olcDbIndex: gidNumber eq

recuperation de bases dbd

Si votre serveur LDAP ne demarre pas avec une erreur “id2entry.bdb: unexpected file type or format ”, il est possible d'essayer de réparer. Bien sur avant faites des sauvegardes ;p :

Deja on s'assure que rien ne tourne a grands coups de ps aux , et au besoin :

# /etc/init.d/nslcd stop
# /etc/init.d/slapd stop

L'idee est de dumper les données correctes puis de les reimporter dans un nouveau fichier

# cd /var/lib/ldap/example.com/
# db4.2_dump id2entry.bdb > /root/id2entry.bdb.dump
# rm id2entry.bdb
# db4.2_load id2entry.bdb < /root/id2entry.bdb.dump
Ne pas oublier de faire un chown pour faire appartenir ce(s) noveau(x) fichiers a l'utilisateur faisant tourner slapd
Le fichier “.dump” est un fichier texte a plat qui peut rapidement comporter un nombre certain de lignes tres longues, donc prendre de la place ;-)

Références