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!