LDAP服务器修改密码后客户端仍用旧密码的问题求助
排查与解决方案
一、缓存组件定位
客户端旧密码的缓存通常来自以下两类组件:
- SSSD缓存:如果客户端使用SSSD(System Security Services Daemon)做认证与用户信息同步,SSSD会默认缓存用户认证凭据、密码哈希等数据,这是此类问题最常见的原因。
- PAM模块缓存:若使用
pam_ldap而非SSSD,PAM层可能会缓存认证会话信息;部分nss_ldap库也会缓存用户属性相关的认证数据。
二、针对性清理方案
1. SSSD缓存清理(优先检查)
先确认客户端是否配置了SSSD(查看/etc/sssd/sssd.conf是否存在),若是则执行:
# 仅清理user1的缓存 sss_cache -u user1 # 或清理所有用户的缓存 sss_cache -E
清理完成后重启SSSD服务:
systemctl restart sssd
2. PAM与LDAP客户端库缓存清理
若未使用SSSD,尝试以下操作:
# 清理PAM临时缓存 rm -rf /var/cache/pam/* # 重启终端登录服务 systemctl restart getty@tty1.service # 若使用图形桌面,重启对应服务(以lightdm为例) systemctl restart lightdm.service
3. 调整缓存超时配置(避免后续问题)
为减少缓存导致的同步延迟,可修改客户端配置缩短缓存有效期:
- 对于
nss_ldap,编辑/etc/ldap.conf:nss_cache_timeout 60 # 设置缓存超时为60秒 - 对于SSSD,编辑
/etc/sssd/sssd.conf的对应域段:[domain/mydomain.net] cache_credentials = True credential_cache_timeout = 60 # 凭据缓存超时60秒
修改后重启对应服务生效。
三、验证有效性
清理缓存后,在客户端执行以下命令直接绑定LDAP服务器,确认新密码可用:
ldapwhoami -x -D uid=user1,ou=users,dc=mydomain,dc=net -W
若直接绑定成功但系统登录仍失败,需检查客户端PAM配置文件(如/etc/pam.d/common-auth),确认LDAP认证规则是否正确配置。
内容的提问来源于stack exchange,提问作者andimeier
相关产品推荐
相关产品推荐

