![CentOS 7:访问 AD 成员 samba 共享反复失败](https://linux22.com/image/722280/CentOS%207%EF%BC%9A%E8%AE%BF%E9%97%AE%20AD%20%E6%88%90%E5%91%98%20samba%20%E5%85%B1%E4%BA%AB%E5%8F%8D%E5%A4%8D%E5%A4%B1%E8%B4%A5.png)
我有一台 Samba 4.6.2 Samba ActiveDirectory 成员服务器。大约每个月,所有客户端都会失去连接到所有共享的能力。我可以通过离开域、删除计算机帐户并重新加入域来解决这个问题,但显然每隔几周就必须这样做是不对的。我以为这是计算机帐户密码过期的问题,但运行 adcli 更新没有帮助。我尝试更改计算机密码过期的组策略,但这也没有帮助。
- Centos 7.4.1708
- Samba 4.6.2
- sssd-krb5-1.15.2
- SSSD 1.15.2-50
- realmd-0.16.1-9
客户端的错误信息是
"\\cheetoes is not accessible. You might not have permissions to use this network resource. Contact the administrator of this server to find out if you have access permissions.
Login Failure: The target account name is incorrect"
在服务器端,在启动时,log.smbd 包含:
[2018/05/09 12:03:41.622878, 0] ../source3/libads/kerberos_util.c:74(ads_kinit_password)
kerberos_kinit_password [email protected] failed: Preauthentication failed
[2018/05/09 12:03:41.622923, 1] ../source3/libads/sasl.c:821(ads_sasl_spnego_bind)
ads_sasl_spnego_gensec_bind(KRB5) failed for ldap/true-companion.hymesruzicka.org with user[CHEETOES$] realm=[HYMESRUZICKA.ORG]: Preauthentication failed
每个客户端的日志显示:
[2018/05/09 12:06:58.259646, 1] ../source3/librpc/crypto/gse.c:646(gse_get_server_auth_token)
gss_accept_sec_context failed with [Unspecified GSS failure. Minor code may provide more information: Request ticket server cifs/[email protected] not found in keytab (ticket kvno 3)]
[2018/05/09 12:06:59.099902, 1] ../source3/librpc/crypto/gse.c:646(gse_get_server_auth_token)
gss_accept_sec_context failed with [Unspecified GSS failure. Minor code may provide more information: Request ticket server cifs/[email protected] not found in keytab (ticket kvno 3)]
在我重新加入后,我没有收到客户端失败信息,也没有收到 log.smbd 中的“预认证失败”错误。我特别困惑为什么重新加入有效,但只能持续一段时间。
答案1
CentOS 7 版本的 Samba 在 Active Directory 环境中非常不完善。CentOS 版本的 Samba 4.8.3adcli
在尝试“update”子命令时会导致核心转储。adcli
也无法正确加入或离开域,并破坏 /etc/samba/smb.conf 以及sssd
和pam
配置。
而且不仅仅是adcli
。realmd
、winbind
和smbd
本身无法与 Windows Active Directory 服务器正确配合使用,导致某些客户端(例如 iOS 设备)无法连接。我发现的唯一解决方法是构建一个“库存” Samba 堆栈,以及来自最新版本源的 adcli+reamld,并在 CentOS Samba 堆栈上使用它。您还必须在 /etc/yum.conf 中禁用所有 Samba 组件的更新,否则您的本地 Samba 安装将被 CentOS 安装破坏。您的 yum.conf 文件至少需要:
exclude=adcli-* libsmbclient-* libwbclient* python-smbc-* realmd-* samba-* samba-client-* samba-client-libs-* samba-common-* samba-common-libs-* samba\
-common-tools-* samba-libs-* samba-python-* samba-winbind-* samba-winbind-clients-* samba-winbind-modules-*
请注意,卸载 CentOS 的 samba 是不切实际的,因为许多其他软件包都依赖于它。