samba com OpenLDAP - NT_STATUS_NO_SUCH_USER

2

Para começar, merda está prestes a acertar o ventilador e eu preciso de sua ajuda! Estou com tão pouco tempo que não consigo descrever tudo o que fiz e o que não fiz, mas tenho um problema e espero que você possa ajudar!

  1. OpenLDAP (trabalhando com scripts ldapsearch e php)
  2. Trabalhando samba sem LDAP

Estou tentando conectar esses dois pontos, não sei exatamente o que você precisa, mas darei a você se você contanto que você pergunte!

Isto é o que meu access.log diz (onde todos os meus dados smb são despejados):

[2013/02/10 19:41:25, 2] passdb/init_sam_from_ldap(545): Entry found for user: ***<username>***
[2013/02/10 19:41:25, 0] passdb/pdb_get_group_sid: Failed to find Unix account for ***<username>***
[2013/02/10 19:41:25, 1] auth/make_server_info_sam(589):  User ***<username>*** in passdb, but getpwnam() fails!
[2013/02/10 19:41:25, 0] auth/check_sam_security: make_server_info_sam() failed with 'NT_STATUS_NO_SUCH_USER'
[2013/02/10 19:41:25, 2] auth/check_ntlm_password:  Authentication for user [***<username>***] -> [***<username>***] FAILED with error NT_STATUS_NO_SUCH_USER

É como se os hashes de senha no banco de dados OpenLDAP não correspondessem ao que o samba considera que deveria receber, ou algo assim. nota: Ao fornecer uma senha errada, ela diz senha incorreta .. esses logs são para uma autenticação perfeita usando credenciais corretas, ou pelo menos eu tentei (via gnome filebrowser, username: username , grupo de trabalho: WORKGROUP, senha: senha em texto simples )

Aqui está meu smb.conf:

[global]
        unix charset = LOCALE
        netbios name = test
        server string = test
        passdb backend = ldapsam:"ldap://<ip>"
        username map = "/etc/samba/smbusers"
        log level = 2
        syslog = 0
        log file = /var/log/samba/access.log
        max log size = 0
        name resolve order = hosts dns
        load printers = No
        add user script = /usr/bin/smbldap-useradd -m '%u'
        delete user script = /usr/bin/smbldap-userdel '%u'
        add group script = /usr/bin/smbldap-groupadd -p '%g'
        delete group script = /usr/bin/smbldap-groupdel '%g'
        add user to group script = /usr/bin/smbldap-groupmod -m '%g' '%u'
        delete user from group script = /usr/bin/smbldap-groupmod -x '%g' '%u'
        add machine script = /usr/sbin/smbldap-useradd -t 0 -w "%u"
        set primary group script = /usr/bin/smbldap-usermod -g '%g' '%u'
        domain logons = Yes
        domain master = Yes
        wins support = Yes

        ldap admin dn = cn=admin,dc=test,dc=local
        ldap group suffix = ou=Groups
        ldap user suffix = ou=People
        ldap suffix = dc=test,dc=local
        ldap ssl = no
        ldap passwd sync = yes

Aqui está o meu ldap.conf

** O servidor está inativo, então não tenho esse atm **

De acordo com o wireshark, o OpenLDAP envia as informações corretas ao pesquisar o uid , mas ao fazer o login real eu acho que o samba diz algo sobre o "singelLevel" que Eu acho que pode ser relevante, isso é onde ele falha e os dados "errados" são enviados de volta para o samba.

Mais uma vez, estou sem sorte e o tempo está contra mim e eu tentei de tudo e de qualquer coisa, mas o samba apenas se recusa a usar qualquer login LDAP.

compartilhamentos:

Eles funcionam sem o LDAP, então o compartilhamento é bom! (mesmo com autenticação não ldap)


Adicionar um usuário unix

Isso funciona ... Então eu posso acessar o compartilhamento, mas eu explicitamente disse ao samba para não usar autenticação local, eu escolhi o LDAP?

    
por Torxed 10.02.2013 / 19:56

1 resposta

3

Eu tive um problema semelhante, em que o samba usava o LDAP para um back-end, mas ainda exigia uma conta Unix local para o usuário, a fim de permitir logons de domínio.

O problema para mim foi fazer com o arquivo /etc/nsswitch.conf que lista os bancos de dados para consultar contas de usuários e grupos, etc. Você não especificou o sistema operacional Linux que você está usando, então eu darei as etapas que eu usei resolver o problema na minha caixa Ubuntu.

Primeiro eu tive que instalar o pacote libnss-ldap :

sudo apt-get install libnss-ldap

Também havia várias dependências, uma das quais é ldap-auth-config . Se as ACLs em seu servidor OpenLDAP impedirem pesquisas anônimas, será necessário especificar uma conta ldap, por exemplo. cn=admin,dc=example,dc=com que tem acesso ao banco de dados LDAP, durante a configuração deste pacote.

Depois disso, edite o arquivo /etc/nsswitch.conf . Adicione 'ldap' a três entradas para passwd, group e shadow como mostrado abaixo. Alguns sistemas usam 'compat' e outros 'arquivos', então você pode deixar o primeiro bit sozinho.

passwd: compat ldap
group: compat ldap
shadow: compat ldap

A alteração deve entrar em vigor imediatamente. Você pode confirmar que funcionou emitindo o comando getent :

getent passwd

Deve listar todas as contas de usuários locais e LDAP.

    
por 27.02.2013 / 18:24

Tags