nss_ldap: “getent passwd” funciona, “getent passwd username” falha?

2

Eu instalei o nss_ldap, editei o nsswitch.conf para usar o ldap; aqui está meu conteúdo /etc/ldap.conf :

host ldap.<mycompany>.com
base o=<mycompany>,c=<cc>
bind_policy soft
nss_reconnect_tries 4
nss_reconnect_sleeptime 1
nss_reconnect_maxsleeptime 16
nss_reconnect_maxconntries 2

Quando faço

getent passwd

Tenho uma visão correta de todos os nomes de usuários da empresa. Mas se eu fizer

getent passwd <some user>

com um nome de usuário válido conhecido, nada é retornado, como se o usuário não existisse. (funciona para usuários locais não-ldap)

Se eu compilar o nss_ldap com a depuração ativada, o primeiro imprimirá muitas mensagens de depuração como:     nss_ldap: == > do_result     nss_ldap: < == do_result     nss_ldap: == > _nss_ldap_assign_userpassword     nss_ldap: < == _nss_ldap_assign_userpassword

mas o último não mostra nada. Não há nada no syslog também.

Isso me intriga bastante. Onde devo começar a procurar o problema? alguma idéia de onde poderia ser?

O cliente está executando o Gentoo linux, nss_ldap-264. O servidor LDAP está fora do meu controle.

    
por b0fh 31.08.2010 / 18:35

1 resposta

3

Você usa o nscd, o daemon de armazenamento em cache? Ele pode ter um cache negativo do usuário, e nesse caso, executar /usr/sbin/nscd -i passwd invalidaria o cache e causaria uma nova busca.

getent passwd funciona porque ignora o nscd.

    
por 31.08.2010 / 18:38

Tags