Benutzer-Werkzeuge

Webseiten-Werkzeuge


anleitungen:openldap:suchfilter

3. OpenLDAP - Suchfilter

ldapsearch

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.


Suchfilter

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:

  • objectClass=posixAccount
  • UND uid=user
  • UND memberof=cn=gogs,ou=groups,dc=freifunk,dc=net

Der DN der Gruppe muss hier voll ausgeschrieben werden.

anleitungen/openldap/suchfilter.txt · Zuletzt geändert: 2018/02/20 09:37 (Externe Bearbeitung)