Ldapsearch

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Interrogation d'annuaire LDAP
Commande ldapsearch
Paquet openldap-clients (RHEL) · ldap-utils (Debian)
Voir aussi LDAP · OPENLDAP · LDIF

ldapsearch est l'outil en ligne de commande de référence pour interroger un annuaire LDAP (OpenLDAP, Active Directory, 389 DS...). Il fait partie du paquet client openldap-clients / ldap-utils selon la distribution.

Options principales

-x        pas d'authentification SASL (bind simple, avec -D/-W)
-LLL      restreint la sortie LDIF (masque les commentaires et la version)
-H uri    URI du serveur (ldap://serveur ou ldaps://serveur)
-h host   nom d'hôte ou adresse IP du serveur (alternative à -H)
-D dn     DN de bind (compte utilisé pour se connecter)
-W        demande le mot de passe de manière interactive (au prompt)
-w pass   mot de passe en ligne de commande (déconseillé : reste dans l'historique shell)
-b base   branche (base DN) où porte la recherche
-s scope  étendue de la recherche : base, one ou sub

Exemples

Recherche par groupe (bind simple) :

ldapsearch -x -LLL -H ldap://ldap.exemple.local/ \
  -D "cn=admin,dc=exemple,dc=local" -W \
  -b "ou=administration,dc=exemple,dc=local"

Interrogation d'une base Active Directory :

ldapsearch -x -LLL -h ad.exemple.local \
  -D "cn=administrateur,cn=users,dc=exemple,dc=local" -W \
  -b "dc=exemple,dc=local" "(objectClass=computer)" cn

Filtres courants (annuaire Active Directory)

Tous les ordinateurs sans description :
  (&(objectClass=computer)(!(description=*)))

Tous les groupes ayant une description :
  (&(objectCategory=group)(description=*))

Tous les groupes dont le nom commence par QA ou HD :
  (&(objectClass=group)(|(cn=QA*)(cn=HD*)))

Tous les objets où Department, Company ou Description vaut "Ventes" :
  (|(department=Ventes)(company=Ventes)(description=Ventes))

Tous les utilisateurs créés après le 01/08/2008 :
  (&(objectClass=user)(whenCreated>=20080801000000.0Z))

Tous les comptes bientôt verrouillés (échecs de connexion) :
  (&(objectClass=user)(badPwdCount>=2))

Tous les comptes utilisateur désactivés :
  (&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=2))

Tous les utilisateurs membres d'un groupe donné :
  (&(objectClass=user)(memberOf=cn=Groupe QA,ou=Support,dc=exemple,dc=fr))

Tous les utilisateurs ayant une adresse mail :
  (&(objectClass=user)(mail=*))

Tous les utilisateurs devant changer leur mot de passe à la prochaine connexion :
  (&(objectCategory=user)(pwdLastSet=0))

Tous les utilisateurs avec mot de passe n'expirant jamais :
  (&(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=65536))

⚠️ Corrections apportées : plusieurs filtres de la source d'origine étaient tronqués ou syntaxiquement invalides (ex. tClass=user au lieu de objectClass=user, parenthésage incorrect sur la négation). Les filtres ci-dessus ont été corrigés pour être directement utilisables.

Voir aussi

  • LDAP — structure d'un annuaire (DN, DC, OU, CN)
  • OPENLDAP — installation et administration d'un serveur OpenLDAP
  • LDIF — modifier les objets trouvés via des fichiers LDIF