Um Einträge im Verzeichnis zu finden, gibt es das Programm „ldapsearch“.
Möchte man z.b. den Benutzer mit der uid=sven finden, nutzt man ldapsearch wie folgt:
/srv/openldap/bin/ldapsearch -LL -h 127.0.0.1 -x "(uid=max)" -b dc=freifunk,dc=net
Als Ausgabe wird dann das Benutzer-Objekt angezeigt:
version: 1 dn: uid=max,ou=users,dc=freifunk,dc=net objectClass: posixAccount objectClass: top objectClass: inetOrgPerson gidNumber: 0 givenName: Sven initials: SS sn: Schmalle displayName: Max Mustermann uid: max homeDirectory: /home/max loginShell: /bin/bash cn: Max Mustermann uidNumber: 46813
Möchte man wissen in welchen Gruppen der Benutzer steckt, geht dies mit dem „memberof“ zusatz:
/srv/openldap/bin/ldapsearch -LL -h 127.0.0.1 -x "(uid=max)" -b dc=freifunk,dc=net memberof
Ausgabe:
version: 1 dn: uid=max,ou=users,dc=freifunk,dc=net memberOf: cn=gogs,ou=groups,dc=freifunk,dc=net
Hier erkennt man das der Benutzer mit der uid=max in der Gruppe „gogs“ aufgeführt ist.
Würde der Benutzer in mehreren Gruppen stecken, würden hier mehrere Zeilen untereinander aufgeführt werden.
Um im LDAP von externen Programmen aus suchen zu können, gibt es die Suchfilter.
Diese kann man z.b. über den LDAP-Client (Windows) von http://www.ldapadmin.org testen.
Ein Suchfilter der den Benutzer mit der uid=max suchen würde, würde sich wie folgt definieren:
(uid=max)
Meistens möchte man einschränkungen in der suche einbezihen, z.b. das wir nur in den Objekten suchen wollen, welche als „posixAccount“ angelegt wurden. Dies würde so aussehen:
(&(objectClass=posixAccount)(uid=max))
Das & am Anfang gibt an das alles was durch die nächsten Klammer-Blöcke definiert wird als „UND-Verknüpfung“ in der Suche zutreffen muss, also „(objectClass=posixAccount) UND (uid=max)“.
Das gegenteil wäre eine „ODER-Verknüpfung“ welche so aussehen würde:
(||(objectClass=posixAccount)(uid=max))
Hier würden wir nach allen Objekten suchen, welche vom objectClass posixAccount sind ODER die uid=max ist.
Um das Beispiel komplett zu machen, hier noch der Teil den man braucht um Objekte in Gruppen zu suchen:
(&(objectClass=posixAccount)(uid=max)(memberof=cn=gogs,ou=groups,dc=freifunk,dc=net))
Hier wird folgendes gesucht:
Der DN der Gruppe muss hier voll ausgeschrieben werden.