Samba + LDAP: a autenticação do usuário funciona para um, mas não para outro servidor

1

Eu tenho um problema muito frustrante que estou tentando resolver há alguns dias, talvez um de vocês possa me ajudar.

Eu tenho dois servidores samba (autônomos) que devem autenticar os usuários usando um servidor LDAP. Ambos os servidores samba usam LDAP para autenticação de usuário nss e unix (ou seja, ssh funciona para todos os usuários LDAP, getent passwd / group mostra todos os usuários / grupos) corretamente. No entanto, o samba só funciona no servidor 1 mas não no servidor 2, lá eu obtenho

[2013/06/06 19:03:06.972236,  3] auth/auth.c:216(check_ntlm_password)
  check_ntlm_password:  Checking password for unmapped user [XXX]\[xxx]@[XXX] with the new password interface
[2013/06/06 19:03:06.972266,  3] auth/auth.c:219(check_ntlm_password)
  check_ntlm_password:  mapped user is: [YYY]\[xxx]@[XXX]
[2013/06/06 19:03:06.972311,  3] smbd/sec_ctx.c:210(push_sec_ctx)
  push_sec_ctx(0, 0) : sec_ctx_stack_ndx = 1
[2013/06/06 19:03:06.972334,  3] smbd/uid.c:429(push_conn_ctx)
  push_conn_ctx(0) : conn_ctx_stack_ndx = 0
[2013/06/06 19:03:06.972351,  3] smbd/sec_ctx.c:310(set_sec_ctx)
  setting sec ctx (0, 0) - sec_ctx_stack_ndx = 1
[2013/06/06 19:03:06.972395,  3] smbd/sec_ctx.c:418(pop_sec_ctx)
  pop_sec_ctx (0, 0) - sec_ctx_stack_ndx = 0
[2013/06/06 19:03:06.972414,  3] auth/auth_sam.c:399(check_sam_security)
  check_sam_security: Couldn't find user 'xxx' in passdb.
[2013/06/06 19:03:06.972432,  2] auth/auth.c:314(check_ntlm_password)
  check_ntlm_password:  Authentication for user [xxx] -> [xxx] FAILED with error NT_STATUS_NO_SUCH_USER
[2013/06/06 19:03:06.972463,  3] smbd/error.c:80(error_packet_set)
  error packet at smbd/sesssetup.c(111) cmd=115 (SMBsesssetupX) NT_STATUS_LOGON_FAILURE

A seção geral do smb.conf é exatamente a mesma nos dois servidores. No entanto, o servidor 1 usa o LDAP corretamente:

[2013/06/06 19:15:38.458920,  3] auth/auth.c:216(check_ntlm_password)
  check_ntlm_password:  Checking password for unmapped user [YYY]\[xxx]@[XXX] with the new password interface
[2013/06/06 19:15:38.458941,  3] auth/auth.c:219(check_ntlm_password)
  check_ntlm_password:  mapped user is: [XXX]\[xxx]@[XXX]
[2013/06/06 19:15:38.458961,  3] smbd/sec_ctx.c:210(push_sec_ctx)
  push_sec_ctx(0, 0) : sec_ctx_stack_ndx = 1
[2013/06/06 19:15:38.458974,  3] smbd/uid.c:429(push_conn_ctx)
  push_conn_ctx(0) : conn_ctx_stack_ndx = 0
[2013/06/06 19:15:38.458987,  3] smbd/sec_ctx.c:310(set_sec_ctx)
  setting sec ctx (0, 0) - sec_ctx_stack_ndx = 1
[2013/06/06 19:15:38.465392,  3] lib/smbldap.c:735(smb_ldap_start_tls)
  StartTLS issued: using a TLS connection
[2013/06/06 19:15:38.479800,  2] lib/smbldap.c:950(smbldap_open_connection)
  smbldap_open_connection: connection opened
[2013/06/06 19:15:38.481107,  3] lib/smbldap.c:1166(smbldap_connect_system)
  ldap_connect_system: successful connection to the LDAP server
[2013/06/06 19:15:38.481136,  4] lib/smbldap.c:1242(smbldap_open)
  The LDAP server is successfully connected
[2013/06/06 19:15:38.481922,  2] passdb/pdb_ldap.c:572(init_sam_from_ldap)
  init_sam_from_ldap: Entry found for user: ldaplookup

A única diferença significativa é que o servidor 1 é um debian 6.0.3 com samba 3.5.6 e o servidor 2 é um CentOS 6.3 com samba 3.5.10. Os arquivos de configuração do ldap e pam estão em lugares diferentes, mas o samba parece idêntico a mim. Aqui está o smb.conf sem compartilhamentos:

[global]
   workgroup = XXX
   server string = %h server
   dns proxy = no
   name resolve order = lmhosts host wins bcast
   hosts allow = 127.0.0.0/8 192.168.99.0/24 172.24.0.0/16 172.25.0.0/16 172.30.0.0/16
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   encrypt passwords = true
   passdb backend = ldapsam:ldap://myldapserver
   ldap suffix = dc=mydomain,dc=com
   ldap admin dn = cn=replicator,dc=mydomain,dc=com
   ldap user suffix = ou=users
   ldap group suffix = ou=groups
   ldap machine suffix = ou=computers
   ldap passwd sync = Yes
   ldap ssl = start tls
   ldap debug level = 4
   log level = 4
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes

Eu estava procurando guias e tutoriais nos últimos dias, mas eles usavam winbind e idmap, mas como minha configuração funciona para um servidor, não vejo a necessidade de configurar serviços adicionais. Deve haver um erro na configuração em algum lugar que não consigo ver. Desde que eu usei apenas debian e Ubuntu como servidor OS antes eu não sei se estou faltando algo simples que eu tenho que habilitar / desabilitar / alterar no centOS.

Eu recarreguei (mas não reiniciei) o serviço samba em ambos os servidores depois de alterar a configuração. Não é possível reiniciar os próximos dias, pois os usuários estão trabalhando nele 24 horas por dia, 7 dias por semana, e uma reinicialização interromperia a conexão com o afaik. No entanto, a configuração foi, de acordo com log.smbd, atualizada:

[2013/06/06 19:44:15.896620,  3] param/loadparm.c:7873(do_section)
  Processing section "[global]"
...
  doing parameter passdb backend = ldapsam:ldap://myldapserver
  doing parameter ldap suffix = dc=mydomain,dc=com
...

E mudar coisas como o nível de depuração funciona. Este poderia ser o problema, que um recarregamento apenas recarrega algumas partes da configuração, mas não todas?

Sou grato por cada dica!

    
por Phil 06.06.2013 / 19:58

0 respostas