pam_ldap problem

Ondrej Puzman puzmano na volny.cz
Pondělí Září 12 00:08:27 CEST 2005


Zdravim,

> tak error 49 znamená "LDAP_INVALID_CREDENTIALS", čo môže znamenať, že
> používateľ má v profile zadefinovaný atribút userPassword v inom formáte
> ako ho očakáva pam. t.j. namiesto množstva zbytočných logov by sa zišlo
> ukázať predmetný profil používateľa a či jeho heslo je naozaj uložené
> v systémom podporovanom formáte.
> inak povedané, to že heslo uložené napríklad ako sha hash je možné
> použiť pre bindnutie daného dn k databáze automaticky neznamená, že
> systém skrz pam musí takémuto hashu s heslom rozumieť.

Heslo je ulozene jako ssha hash. Nicmene nechapu, proc by to melo
vadit - pam modul musi stejne do funkce ldap_simple_bind predavat jako
parametr plain text heslo. O zahashovani se postara samotny ldap - to
je aspon muj nazor.

Stravil jsem nad tim dalsich par hodin a nakonec jsem prekompiloval
modul pam_ldap ze zrojaku a do klicovych mist jsem doplnil vypsani
hesla do syslogu. Zda se, ze problem neni v ldapu, ale v tom, ze
pam_ldap si vubec nedokaze korektne prevzit zadane heslo.

Pridam jeste kousek zbytecneho logu :)
Sep 12 01:57:14 localhost sshd[14738]: pam_ldap: error trying to bind
as user "uid=puzman,ou=people,dc=amit,dc=cz" (Invalid credentials) -
password: ^H ^M\177INCORRECT

Pro uplnost dodavam, ze spravne heslo, ktere jsem zadaval je "test".
Ovsem heslo, ktere pam_ldap dostane je vzdy "^H ^M\177INCORRECT"
Problem je ve funkci pam_sm_authenticate - konkretne ve volani:
pam_get_item (pamh, PAM_AUTHOK, (CONST_ARG void **) &p);
ktere vraci vyse zmineny nesmysl.

Pokud v modulu natvrdo zapisu do promenne p spravne heslo, tak bind
projde bez problemu.

Nejsem zadny expert na pam, takze naprosto netusim cim by to mohlo byt
zpusobeno, ani co bych s tim mel delat. Zacinam mit dojem, ze jsem
narazil na nejaky nepekny bug, ale zatim netusim, kde presne by mel
byt.

S pozdravem,
      Ondrej Puzman



Další informace o konferenci Linux