Vorsichtig hinzugefügt: index uid eq und nichts geht mehr.
Wie kann es sein, daß ein Index die Funktion beeinträchtigt, wo doch die Abfrage ohne Index nur etwas länger benötigen sollte? -> nslcd -d -> Abfragen mit ldapsearch validiert: "(&(objectClass=posixAccount)(uid=test1))" -> der index auf uid stört tatsächlich Also erstmal wieder raus.
Problem gelöst, ein Index wirkt immer nur bei neu hinzugefügten Objekten. Werden Indizes nachträglich hinzugefügt, ist slapindex dein Freund und Helfer. Slapd vorher natürlich anhalten.
Ohne den Index kommen noch Abfragen nach posixGroup und uidNumber (beide korrekt), aber keine Abfrage nach dem Passwort.
Ja, ein leerer Index ist schlimmer als gar keiner. ;)
Letzte Erkenntnis: ldapsearch -h 127.0.0.1 -D uid=test1,ou=people,dc=domain,dc=de -W Enter LDAP Password: SASL/DIGEST-MD5 authentication started ldap_sasl_interactive_bind_s: Invalid credentials (49)
Wieso mischt SASL hier wieder mit? Das Password wurde wahlweise als clear, crypt, md5crypt, md5 oder smd5 gespeichert - alles erfolglos.
der fehlende Parameter -x für simple auth war hier des Rätsels Lösung.
Das Anmeldeproblem besteht aber immer noch, nun mit den folgenden Meldungen:
auth.log (nach dem Passwort) Nov 5 17:30:41 lenny sshd[31672]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=xxxxx.dip0.t-ipconnect.de user=test1 Nov 5 17:30:42 lenny sshd[31672]: Failed password for test1 from 84.179.yyy.zzz port 3863 ssh2
nslcd -d nach login: nslcd: [8b4567] DEBUG: connection from pid=31672 uid=0 gid=0 nslcd: [8b4567] DEBUG: nslcd_passwd_byname(test1) nslcd: [8b4567] DEBUG: myldap_search(base="dc=domain,dc=de", filter="(&(objectClass=posixAccount)(uid=test1))") nslcd: [8b4567] DEBUG: simple anonymous bind to ldap://127.0.0.1/ nslcd: [8b4567] connected to LDAP server ldap://127.0.0.1/ nslcd: [8b4567] DEBUG: ldap_result(): end of results
nach passwd: nslcd: [7b23c6] DEBUG: connection from pid=31672 uid=0 gid=0 nslcd: [7b23c6] DEBUG: nslcd_passwd_byname(test1) nslcd: [7b23c6] DEBUG: myldap_search(base="dc=domain,dc=de", filter="(&(objectClass=posixAccount)(uid=test1))") nslcd: [7b23c6] DEBUG: simple anonymous bind to ldap://127.0.0.1/ nslcd: [7b23c6] connected to LDAP server ldap://127.0.0.1/ nslcd: [7b23c6] DEBUG: ldap_result(): end of results nslcd: [3c9869] DEBUG: connection from pid=31672 uid=0 gid=0 nslcd: [3c9869] DEBUG: nslcd_passwd_byname(test1) nslcd: [3c9869] DEBUG: myldap_search(base="dc=domain,dc=de", filter="(&(objectClass=posixAccount)(uid=test1))") nslcd: [3c9869] DEBUG: simple anonymous bind to ldap://127.0.0.1/ nslcd: [3c9869] connected to LDAP server ldap://127.0.0.1/ nslcd: [3c9869] DEBUG: ldap_result(): end of results
Diese Abfragen werden vom LDAP-Server auch bei einem "simple anonymous bind" mit einem Treffer beantwortet, natürlich ohne Herausgabe des Passworts. ;) Aber das sollte ja eigentlich mit einem normalen bind auf den Benutzer getestet werden.
Gruß Rico