🧯Tipps & Fehlersuche

Die meisten LDAP-Probleme verraten sich über den Result-Code und die „additional info“. Hier findest du die häufigsten Codes mit typischer Ursache, dazu Werkzeuge für Indexe, Loglevel und TLS.

🔢Result-Codes

Nach RFC 4511 Anhang A. Die Meldungen der Beispiele wurden mit slapd (OpenLDAP 2.7) beobachtet.
16 von 39
4sizeLimitExceeded

Mehr Treffer als erlaubt – es kommen trotzdem Teilergebnisse.

Ursache: olcSizeLimit (Standard 500) oder -z

Abhilfe: Paged Results (-E pr=500/noprompt) oder Limit für die Identität anheben (olcLimits)

13confidentialityRequired

Vertraulichkeit (Verschlüsselung) erforderlich.

Ursache: olcSecurity: tls=1 und der Client spricht Klartext – slapd meldet „TLS confidentiality required“

Abhilfe: StartTLS (-ZZ) oder ldaps:// verwenden

16noSuchAttribute

Attribut bzw. Wert ist im Eintrag nicht vorhanden.

Ursache: modify delete eines Werts, den es nicht gibt

Abhilfe: vorher lesen oder replace statt delete

17undefinedAttributeType

Attributtyp im Schema unbekannt.

Ursache: Tippfehler oder Schema (z. B. nis/eigenes) nicht geladen

Abhilfe: Schema laden: ldapadd -Y EXTERNAL -H ldapi:/// -f schema.ldif

19constraintViolation

Einschränkung verletzt.

Ursache: SINGLE-VALUE mit mehreren Werten, ppolicy-Regel (Passwortqualität), slapo-unique/constraint

20attributeOrValueExists

Wert existiert bereits.

Ursache: modify add eines vorhandenen Werts (z. B. member doppelt)

Abhilfe: Wert vorher prüfen oder ldapmodify -c

21invalidAttributeSyntax

Wert passt nicht zur Syntax.

Ursache: Text in Integer-Attribut, unbekannte objectClass („objectClass: value #0 invalid per syntax“)

Abhilfe: Syntax prüfen, fehlendes Schema laden

32noSuchObject

Eintrag (oder Suchbasis) existiert nicht.

Ursache: Tippfehler im DN, falsche Suchbasis, Elterneintrag fehlt beim Add

Abhilfe: matchedDN in der Antwort zeigt den tiefsten existierenden Vorfahren

34invalidDNSyntax

DN ist syntaktisch ungültig.

Ursache: nicht escaptes Komma, fehlendes „=“

Abhilfe: Sonderzeichen nach RFC 4514 escapen (\,)

49invalidCredentials

Falsches Passwort oder unbekannter Bind-DN.

Ursache: Tippfehler im DN, Passwort falsch, Konto gesperrt (ppolicy)

Abhilfe: Bind-DN vollständig angeben (-D), -W statt -w im Skript prüfen

50insufficientAccessRights

Keine ausreichenden Rechte (ACL).

Ursache: olcAccess erlaubt die Operation für diese Identität nicht

Abhilfe: ldapwhoami prüfen, slapacl simulieren, loglevel acl

53unwillingToPerform

Server verweigert die Operation.

Ursache: Schreiben ohne rootdn auf readonly-DB, unauthentifizierter Bind (DN ohne Passwort), Löschen eines Schemas in cn=config

64namingViolation

Verstoß gegen Benennungsregeln.

Ursache: Wert des RDN per modify gelöscht (OpenLDAP: „naming attribute 'cn' is not present in entry“)

Abhilfe: Eintrag per modrdn umbenennen statt den Wert zu löschen

65objectClassViolation

Eintrag verletzt die Objektklassen-Regeln.

Ursache: MUST-Attribut fehlt, Attribut nicht erlaubt (MAY), keine oder zwei strukturelle Klassen

Abhilfe: passende Hilfsklasse (AUXILIARY) ergänzen

66notAllowedOnNonLeaf

Operation nur auf Blattknoten erlaubt.

Ursache: Eintrag mit Kindern löschen

Abhilfe: erst Kinder löschen (ldapdelete -r)

68entryAlreadyExists

Eintrag existiert bereits.

Ursache: Add eines vorhandenen DN oder modrdn auf belegten Namen

Abhilfe: ldapmodify -c zum Überspringen, sonst modify statt add

📚 Quellen: RFC 4511 – LDAP: The Protocol · slapd-config(5)

🪜Vorgehen bei Fehlern

FrageBefehlWorauf achten
Verbindungldapwhoami -x -H ldap://ldap.example.org -ZZ -D … -Wklappt TCP, TLS und Bind?
Wer bin ich?ldapwhoami …stimmt die Identität, mit der die ACLs geprüft werden?
Existiert es?ldapsearch -x … -b "<dn>" -s base dn32 → Tippfehler im DN oder falsche Basis
Darf ich das?slapacl -F /etc/openldap/slapd.d -D "<wer>" -b "<dn>" "mail/write"50 → Regel und Reihenfolge prüfen
Was sagt der Server?olcLogLevel: stats (+ acl)Log zeigt jede Operation mit Ergebnis
Passt das Schema?slapschema -F /etc/openldap/slapd.d65/21/17 → Schema geladen? Syntax?

📚 Quellen: ldapsearch(1) · slapacl(8) · slapd-config(5)

📇Indexe (olcDbIndex)

Indexe beschleunigen Suchen, kosten aber Platz und Schreibzeit. Indiziert wird, wonach Anwendungen tatsächlich filtern.
Vorschlag
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: objectClass eq
olcDbIndex: uid eq
olcDbIndex: uidNumber eq
olcDbIndex: member eq
olcDbIndex: mail sub
olcDbIndex: cn sub
olcDbIndex: memberUid eq

eq für Gleichheit (bei Integer-Attributen nutzt mdb geordnete Schlüssel, siehe index_intlen in slapd.conf(5)), sub für Sternchen-Suchen, pres für (attr=*). Über cn=config geändert, baut slapd die Indexe im Hintergrund neu auf; bei slapd.conf ist slapindex nötig (slapd-mdb(5)). Suchen ohne passenden Index meldet slapd im Log mit „… not indexed“.

📚 Quellen: slapd-mdb(5) · Admin Guide: Tuning

📋Loglevel

dezimal: 256
hex: 0x100
Namen: stats
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats

Die Werte sind Bitmasken für Subsysteme, keine steigende „Lautstärke“. Für den Betrieb empfiehlt slapd-config(5) stats; für Rechteprobleme kurz acl dazunehmen. Ohne Angabe (0) wird nichts protokolliert.

📚 Quellen: slapd-config(5)

🔒TLS

# Server (cn=config) – Pfade als Beispiel
dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/ldap/ldap.example.org.crt
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/ldap/ldap.example.org.key
-
replace: olcTLSProtocolMin
olcTLSProtocolMin: 3.3
-
replace: olcSecurity
olcSecurity: tls=1

# Client (/etc/openldap/ldap.conf)
URI         ldap://ldap.example.org
TLS_CACERT  /etc/ssl/certs/ca-certificates.crt
TLS_REQCERT demand
💡 ldaps:// oder StartTLS?
ldaps:// (Port 636) spricht von Anfang an TLS. StartTLS (-ZZ) beginnt unverschlüsselt auf Port 389 und wechselt per ExtendedRequest – mit -ZZ bricht der Client ab, wenn das scheitert; mit einfachem -Z macht er unverschlüsselt weiter.
⚠️ Zertifikat passt nicht?
Der Name in der URI muss im Zertifikat stehen (SAN). TLS_REQCERT demand ist der Standard und richtig – never schaltet die Prüfung ab und öffnet die Tür für Man-in-the-Middle.
✅ Klartext-Binds verhindern
olcSecurity: tls=1 verlangt TLS für alle Operationen; Clients ohne TLS erhalten 13 confidentialityRequired. Für Verbindungen über ldapi:// setzt slapd standardmäßig eine SSF von 71 (olcLocalSSF).

📚 Quellen: RFC 4513 – LDAP: Authentication Methods and Security Mechanisms · slapd-config(5)