我使用 ldap 时遇到问题,当它处于在线状态时,我使用用户/密码从 LDAP 数据库登录,然后无法使用本地密码 su 到 root。当我将 LDAP 切换为离线时,我可以使用本地用户/密码登录,然后使用本地密码 su 到 root。auth.log:
Sep 27 12:18:33 intranet sshd[18321]: pam_unix(sshd:session): session opened for user mejmo by (uid=0)
Sep 27 12:18:39 intranet unix_chkpwd[18340]: check pass; user unknown
Sep 27 12:18:39 intranet unix_chkpwd[18340]: password check failed for user (root)
Sep 27 12:18:39 intranet su[18339]: pam_unix(su:auth): authentication failure; logname=mejmo uid=10009 euid=10009 tty=/dev/pts/1 ruser=mejmo rhost= user=r
Sep 27 12:18:42 intranet su[18339]: pam_authenticate: Permission denied
Sep 27 12:18:42 intranet su[18339]: FAILED su for root by mejmo
我正在输入好的密码,因为当 LDAP 服务器离线时我可以登录。请帮忙,快疯了……
编辑:我发现,当我也在本地创建用户时,将 LDAP 转为在线,然后我就可以 su 到 root。我认为问题是 pam_unix 看不到使用 su 的用户,因为 passwd 中没有条目,但 nssswitch.conf 正常(passwd、shadow 等上的文件 ldap)。
编辑2:
account sufficient pam_ldap.so debug
account sufficient pam_unix.so audit
auth sufficient pam_ldap.so
auth sufficient pam_unix.so audit likeauth use_first_pass
auth required pam_deny.so
EDIT3:它可以与 nscd 一起运行,但它会生成令人讨厌的日志,有时我无法登录...nscd 的问题可能出在哪里?:(
Sep 27 16:27:35 intranet sshd[25830]: pam_ldap: ldap_simple_bind Can't contact LDAP server
Sep 27 16:27:35 intranet sshd[25830]: pam_ldap: reconnecting to LDAP server...
Sep 27 16:27:35 intranet sshd[25830]: pam_ldap: ldap_simple_bind Can't contact LDAP server
答案1
您确定首先检查本地身份验证,然后再检查 LDAP 后端吗?
检查你的 /etc/nsswitch.conf
它应该显示:
密码:文件 ldap 组:文件 ldap 影子:文件 ldap
或者也可以是“兼容”选项
编辑:
nscd 一直是我的 RHEL 机器上的问题根源,它会产生一些你从未预料到的错误。所以答案是肯定的,nscd 可能是导致这种奇怪行为的原因。你应该在测试期间尝试清理 nscd 的缓存。
nscd -i 密码 nscd -i 组
答案2
LDAP 中的用户是否属于正确的组,可以执行 su 转换为 root 吗?
通常这是轮子组,但在您的环境中可能会有所不同。