You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RH6下PAM LDAP认证同名异UID用户登录问题求助

解决RH6中LDAP/PAM认证在删除本地同名用户后的异常问题

看起来你遇到的是RH6系统中同名但UID不同的本地/LDAP用户在PAM认证场景下的典型冲突问题——当本地用户存在时,PAM的多认证源配置让两种密码都能生效,但删除本地用户后,系统无法正确切换到LDAP用户的认证/会话流程。下面是一步步的排查和解决方法:

1. 先定位问题根源

首先明确几个核心点:

  • RH6的nsswitch.conf控制用户信息的查找顺序,如果你的配置是passwd: files ldap,系统会优先读取本地/etc/passwd,有本地用户时忽略LDAP;删除本地用户后才会去查LDAP。
  • 你的PAM配置(system-auth/password-auth)里的auth段应该同时启用了pam_unix.so和pam_ldap.so且标记为sufficient,所以有本地用户时两种密码都能通过认证;但删除本地用户后,pam_unix.so会因找不到用户返回失败,此时需要pam_ldap.so正常接手,异常通常出在这里的会话创建、用户属性读取环节。

2. 调整nsswitch.conf确保LDAP用户能被正确识别

编辑/etc/nsswitch.conf,确认用户组相关的配置:

passwd:     files ldap
group:      files ldap
shadow:     files ldap

如果你希望优先使用LDAP用户(即使有本地同名用户),可以改成ldap files,但根据你的场景,保持files ldap即可——删除本地用户后自动切换到LDAP。

执行getent passwd ssosers测试:删除本地用户后,这个命令应该返回LDAP中该用户的完整信息(包括UID、家目录、shell等)。如果返回空,说明LDAP客户端配置有问题,检查/etc/ldap.conf或/etc/openldap/ldap.conf中的base、uri、binddn等参数是否正确,确保能连接到LDAP服务器。

3. 修正PAM配置,完善LDAP用户的会话流程

打开/etc/pam.d/system-auth和/etc/pam.d/password-auth,调整以下段:

认证段(Auth):保持现有逻辑,但确保优先级正确

auth        sufficient    pam_unix.so nullok try_first_pass
auth        sufficient    pam_ldap.so use_first_pass
auth        required      pam_deny.so

这里sufficient表示只要其中一个模块认证通过就放行,符合你原来“两种密码都能登录”的需求;删除本地用户后,pam_unix.so失败,自动走pam_ldap.so。

会话段(Session):添加LDAP支持和自动创建家目录

很多时候删除本地用户后登录失败,是因为LDAP用户的家目录不存在,需要添加pam_mkhomedir.so自动创建:

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so  # 启用LDAP会话支持
session     optional      pam_mkhomedir.so skel=/etc/skel umask=0022  # 自动创建家目录

密码段(Password):确保LDAP密码修改能正常同步

如果需要支持修改LDAP密码,添加:

password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok
password    required      pam_deny.so

4. 验证LDAP用户属性完整性

确保LDAP中的ssosers用户具备以下必填属性:

  • uidNumber:唯一UID(和本地用户不同是允许的)
  • gidNumber:对应的GID
  • homeDirectory:家目录路径(比如/home/ssosers)
  • loginShell:登录shell(比如/bin/bash)

这些属性缺失会导致系统无法正确识别LDAP用户,进而登录失败。

5. 排查日志定位剩余问题

如果还是异常,查看/var/log/secure日志,里面会记录PAM认证的详细错误信息:

  • 比如pam_unix(su-l:auth): authentication failure说明pam_unix找不到用户,但pam_ldap是否尝试认证?
  • 比如pam_mkhomedir(sshd:session): Failed to create directory /home/ssosers说明权限问题,需要检查/home目录的权限。

另外可以临时关闭SELinux(setenforce 0)测试,如果能登录,说明SELinux阻止了LDAP认证或家目录创建,需要添加相应的SELinux规则(比如setsebool -P allow_ldap_home_dirs on)。


内容的提问来源于stack exchange,提问作者LucaP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:07:46