LDAP – 3. OpenLDAP Suchfilter

Nach dem einrichten des LDAP-Servers können wir nun anfangen diesen zu benutzen.
Um Einträge im LDAP-Verzeichnis wieder zu finden gibt es das Programm „ldapsearch“ mit welchem man LDAP-Intern als LDAP-Client suchen kann.
Möchte man LDAP-Einträge von externen Programmen finden, fungiert dieses als LDAP-Client und man muss in diesem diverse „Suchfilter“ angeben um die gesuchten Einträge zu finden.

​ldapsearch
Um Einträge im LDAP-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: Max
initials: MM
sn: Mustermann
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 einbeziehen, 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
Achtung! Der DN der Gruppe muss hier voll ausgeschrieben werden.

Hier die Übersicht der einzelnen Teile:

1. OpenLDAP Kompilieren
2. OpenLDAP Einrichtung
3. OpenLDAP Suchfilter
4. PAM mit LDAP
5. Einrichtung Openssh mit Public Key
6. Beispiel-Template für LDAPAdmin
7. TestSystem & Beispiele
8. SSL und TLS in OpenLDAP

leave your comment


*

Unterstütze den Frickelblog!