我刚刚关注这关于如何设置 Ubuntu 以使用 Mac OS X 10.4 服务器进行身份验证的指南。我完全按照指南操作,最后能够通过运行以下命令查看用户
getent 密码 和 getent 密码 (用户)
这将提供有关用户的所有正确信息。我的问题是我希望这些用户能够通过登录提示登录,但这行不通。当我以本地用户身份登录时,我得到了通常的用户名和密码提示,但随后我得到了 LDAP 密码提示,我可以在其中输入任何内容并仍能成功登录。
有什么办法可以解决这个问题吗?提前致谢!
更新:
如下所述,我确信 LDAP 设置正确,因为我可以看到所有使用 getent passwd 的 LDAP 用户,但由于我无法使用su
、ssh
或gdm
以这些用户的身份登录,所以出现了其他问题。
答案1
问题在于该指南是错误的,或者至少不是最优的。
/etc/pam.d/common-auth 应该有:
auth 充分 pam_unix.so nullok_secure nodelay 身份验证充分 pam_ldap.so use_first_pass 身份验证需要 pam_deny.so
这表明 pam_unix 或 pam_ldap 是充足的登录,任何登录失败都会被拒绝。它首先尝试本地 unix 登录 - 如果您的 LDAP 服务器已关闭或无法访问并且您仍然需要以本地用户身份登录,这将非常有用。
它还使用“use_first_pass”而不是“try_first_pass”...它们非常相似,只是如果第一次输入密码错误,它不会再次提示输入密码。
有关更多详细信息,请参阅 pam_unix 和 pam_ldap 的手册页。
顺便说一句,将以下内容添加到 /etc/pam.d/common-session 非常有用:
会话需要 pam_limits.so
它允许您使用 /etc/security/limits.conf 和 access.conf 等对允许哪些用户登录进行非常精细的控制(例如,我将服务器上的 ssh 登录限制为管理员组的成员),并为他们的登录设置资源限制(内存,maxlogins,优先级等)。
答案2
/etc/pam.d/common-(whatever) 中的 common_(whatever) 顺序是否正确?请检查这些文件和 /etc/pam.d/login,确保它们上方没有标有“required”或“requisite”的文件。
另外,您是否编辑了 /etc/ldap.conf 和 /etc/ldap/ldap.conf 以反映您的 ldap 设置?如果这些都不起作用,您可以尝试发布失败登录的日志片段,并可能发布 LDAP 服务器上尝试绑定的日志片段。
请注意,您可以在 getent passwd 中看到用户没有意味着您已正确设置 ldap。意味着您已正确设置 nss_ldap。身份验证由单独的模块 pam-ldap 完成。
答案3
您是否使用匿名绑定来绑定 LDAP 服务器?获取用户列表并根据 LDAP 服务器对其进行身份验证由 2 个单独的包处理。您能否发布您的 /etc/ldap.conf 和任何相关错误?