У меня очень неприятная проблема, которую я пытаюсь решить уже несколько дней, может быть, кто-нибудь из вас сможет мне помочь.
У меня есть два (автономных) сервера самбы, которые должны аутентифицировать пользователей с помощью сервера LDAP. Оба сервера samba используют LDAP для аутентификации пользователей nss и unix (т.е. ssh работает для всех пользователей LDAP, getent passwd / group показывает всех пользователей / группы) правильно. Однако самба работает только на сервере 1, но не на сервере 2, я получаю
[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
Общий раздел smb.conf: именно то же самое на обоих серверах. Однако сервер 1 правильно использует LDAP:
[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
Единственное существенное отличие состоит в том, что сервер 1 - это debian 6.0.3 с samba 3.5.6, а сервер 2 - это CentOS 6.3 с samba 3.5.10. Файлы конфигурации ldap и pam находятся в разных местах, но самба мне кажется идентичной. Вот smb.conf без общих ресурсов:
[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
Я искал руководства и учебные пособия в течение последних нескольких дней, но в основном они использовали winbind и idmap, но поскольку моя установка работает для одного сервера, я не вижу необходимости в настройке дополнительных служб. Где-то в конфигурации должна быть ошибка, которую я не вижу. Поскольку до этого я использовал только debian и ubuntu в качестве серверной ОС, я не знаю, не хватает ли мне чего-то простого, что мне нужно включить / отключить / изменить в CentOS.
Я перезагрузил (но не перезапустил) службу samba на обоих серверах после изменения конфигурации. Перезапуск невозможен в ближайшие дни, поскольку пользователи работают в нем 24/7, и перезапуск приведет к разрыву соединения afaik. Однако, согласно log.smbd, конфигурация была обновлена:
[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
...
И изменение таких вещей, как уровень отладки, работает. Может ли быть проблема, что при перезагрузке перезагружаются только некоторые части конфигурации, но не все?
Благодарю за каждую подсказку!