使用realmd将Linux主机加入AD域后无法在命令行修改AD用户密码
故障根因归类
- SSSD配置缺失:当前
sssd.conf中未明确指定密码修改提供方,SSSD默认不会将密码修改请求转发到AD域控 - PAM规则异常:
/etc/pam.d/passwd中pam_sss规则缺失或顺序错误,导致优先调用pam_unix模块查询本地用户数据库,触发日志中用户不存在于/etc/passwd的报错 - AD侧权限/策略限制:域密码策略不允许当前修改操作、主机账号无修改用户密码的委托权限、用户属于AD受保护组禁止非Windows设备改密码
- Kerberos配置错误:
/etc/krb5.conf中域控地址、realm配置错误,导致密码修改请求无法送达AD服务器
排查步骤
- 修复SSSD配置
在/etc/sssd/sssd.conf的[domain/domain.example.com]段添加以下参数:
chpass_provider = ad krb5_passwd_protocol = MS-KKDCP ad_gpo_access_control = permissive
修改完成后执行以下命令生效:
systemctl restart sssd sss_cache -E
重启后测试密码修改操作。
- 校验PAM配置
查看/etc/pam.d/passwd文件,确保存在以下pam_sss规则,且优先级高于pam_unix的密码修改规则:
password sufficient pam_sss.so use_authtok
若手动配置容易出错,可执行authconfig --enablesssd --enablesssdauth --update自动生成符合规范的PAM规则。
- 排除AD侧限制
- 先在Windows域控侧测试该用户能否正常修改密码,排除密码复杂度、最短使用期限、密码历史等域策略限制
- 检查AD中对应Linux主机的计算机账号权限,确认已授予修改域用户密码的委托权限
- 确认修改的用户未加入AD的「受保护的用户」安全组,该组成员默认禁止在非Windows设备上修改密码
细化日志排查
在sssd.conf的[sssd]段添加debug_level = 9,重启sssd服务后复现改密码操作,查看/var/log/sssd/sssd_domain.example.com.log中的详细报错,可精确定位请求失败的具体环节。Kerberos连通性测试
直接执行kpasswd username.lin@DOMAIN.EXAMPLE.COM测试密码修改,如果该命令同样报错,可直接定位为Kerberos配置或AD侧问题,无需再排查SSSD和PAM配置。
内容的提问来源于stack exchange,提问作者IT_User
相关产品推荐
相关产品推荐

