🔎Filter-Labor

Ein LDAP-Filter ist ein Ausdruck in Präfixschreibweise: erst der Operator, dann die Teilfilter, alles in Klammern. Der Server wertet ihn für jeden Eintrag im Suchbereich aus – mit drei möglichen Ergebnissen.

🧪Ausprobieren

Scope (-s)
$ ldapsearch -x -LLL -b "dc=example,dc=org" -s sub "(&(objectClass=inetOrgPerson)(|(ou=Vertrieb)(mail=*@example.org)))" dn

Kandidaten

5 Treffer

Nur TRUE kommt in das Ergebnis. Klick zeigt die Auswertung im Baum.

Filterbaum für cn=Schulz\, Frank

UND: FALSE schlägt alles, sonst Undefined vor TRUE · ODER: TRUE schlägt alles, sonst Undefined vor FALSE · NICHT(Undefined) = Undefined (RFC 4511 §4.5.1.7)

& UNDTRUEalle Teilfilter sind TRUE
(objectClass=inetOrgPerson)TRUEWert „inetOrgPerson“ ist gleich nach objectIdentifierMatch
| ODERTRUEmindestens ein Teilfilter ist TRUE
(ou=Vertrieb)TRUEWert „Vertrieb“ ist gleich nach caseIgnoreMatch
(mail=*@example.org)FALSEkein Wert passt zum Muster (caseIgnoreIA5SubstringsMatch)

📇 Index-Empfehlung für diesen Filter

Ohne passenden Index muss slapd jeden Kandidaten laden und prüfen. objectClass hat immer einen eq-Index (slapd-mdb(5)).

olcDbIndex: objectClass eq olcDbIndex: ou eq olcDbIndex: mail sub

🧯 Werte für Filter escapen (RFC 4515 §3)

Im Filter werden nur * ( ) \ und NUL escaped – immer als \ + zwei Hex-Ziffern. Das Komma bleibt, anders als im DN.

(cn=Schulz, Frank \28extern\29 \2a)

📚 Quellen: RFC 4515 – LDAP: String Representation of Search Filters · RFC 4511 – LDAP: The Protocol · RFC 4526 – LDAP Absolute True and False Filters · slapd-mdb(5)

📘Die Bausteine

FormBedeutungHinweis
(attr=wert)GleichheitEQUALITY-Regel, z. B. caseIgnoreMatch
(attr=*)vorhandenAttribut hat mindestens einen Wert
(attr=an*g*e)TeilstringSUBSTR-Regel: Anfang, Mitte(n), Ende
(attr>=wert)größer/gleichORDERING-Regel nötig, sonst Undefined
(attr<=wert)kleiner/gleichORDERING-Regel nötig, sonst Undefined
(attr~=wert)ungefährRegel legt der Server fest (RFC 4511); hier wie Gleichheit ausgewertet
(attr:regel:=wert)erweitertMatching-Regel frei wählen, :dn: prüft auch DN-Teile
(&(…)(…))UNDalle Teilfilter
(|(…)(…))ODERmindestens einer
(!(…))NICHTgenau ein Teilfilter

📚 Quellen: RFC 4515 – LDAP: String Representation of Search Filters