Samba4 AD DC中LDAP设置用户密码无法用于认证,仅smbpasswd生效的问题咨询
Samba4 AD DC中LDAP设置用户密码无法用于认证,仅smbpasswd生效的问题咨询
嘿,我来帮你梳理这个问题!你遇到的情况其实是Samba4 AD DC和原生Active Directory在LDAP密码处理上的关键差异导致的,咱们一步步拆解:
问题核心原因
Samba4 AD DC虽然兼容LDAP协议,但它的密码验证逻辑不仅仅依赖unicodePwd属性——它还需要同步更新内部的NTLM哈希、Kerberos密钥等衍生密码值。
- 当你用
smbpasswd设置密码时,工具会自动完成两件事:更新unicodePwd属性,同时同步生成并存储Samba内部验证所需的各种密码哈希; - 但你通过LDAP的
AddRequest或者ldapadd命令设置unicodePwd时,只会修改这个LDAP属性本身,不会触发Samba内部的密码哈希同步流程,导致认证时Samba找不到匹配的验证凭据,进而返回“无效凭证”错误。
错误码的额外提示
你看到的data 533错误,本质是因为Samba内部的密码状态未同步,系统判定该用户的验证凭据不完整,并非真的账户禁用(毕竟你刚创建用户)。
解决办法
这里有两种可行的方案:
方案1:创建用户后触发Samba密码同步
在通过LDAP创建用户并设置unicodePwd后,登录到Samba服务器执行以下命令,强制同步密码哈希:
samba-tool user setpassword testuser --newpassword=pw1234!
执行后,再用LDAP认证就可以正常通过了。
方案2:直接用Samba工具创建用户
跳过纯LDAP创建的步骤,直接使用Samba官方工具创建用户,它会自动处理所有属性和哈希同步:
samba-tool user create testuser pw1234! --userou="CN=Users,DC=ldap,DC=test,DC=dev"
这样创建的用户可以直接通过LDAP认证。
关于unicodePwd值差异的侧问题解答
你发现存储的unicodePwd值和你传入的编码值不一样,这是完全正常的!Active Directory(包括Samba4)不会明文存储密码,你传入的IgBwAHcAMQAyADMANAAhACIA是明文密码按规范编码后的格式,服务器接收后会立即加密为不可逆的哈希值存储,所以两者自然不同,这个现象和认证问题无关。
备注:内容来源于stack exchange,提问作者iSpain17
相关产品推荐
相关产品推荐

