系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)

登录功能不起作用

在登录过程中,LDAP 客户机使用 PAM 模块 进行用户验证。在使用标准的 UNIX PAM 模块时,口令是从服务器读取并在客户端上检查的。这可能会由于以下某种原因而失败:

  1. ldap 未由 /etc/nsswitch.conf 文件中的 passwd 服务使用。

  2. 代理无法读取服务器列表中用户的 userPassword 属性。必须至少允许一个代理读取口令,因为该代理可以将口令返回给客户机进行比较。pam_ldap 不需要对口令具有读取访问权限。

  3. 代理可能没有正确的口令。

  4. 该项没有 shadowAccount 对象类。

  5. 没有为该用户定义口令。

    在使用 ldapaddent 时,必须使用 -p 选项来确保已向该用户项中添加了口令。如果使用不带 -p 选项的 ldapaddent,用户的口令将不存储在目录中,除非使用 ldapaddent 另外添加了 /etc/shadow 文件。

  6. 没有可访问的 LDAP 服务器。

    检查服务器的状态。


    # /usr/lib/ldap/ldap_cachemgr -g
    
  7. pam.conf 的配置有误。

  8. 没有在 LDAP 名称空间中定义该用户。

  9. NS_LDAP_CREDENTIAL_LEVEL 对于 pam_unix 设置为 anonymous,而且 userPassword 对于匿名用户不可用。

  10. 口令没有以 crypt 格式存储。

  11. 如果所配置的 pam_ldap 支持帐户管理,则登录失败可能是由以下某种原因引起的:

    • 用户的口令已过期。

    • 用户的帐户由于登录失败尝试的次数过多而被锁定。

    • 用户的帐户已经由管理员停用。

    • 用户尝试通过不使用口令的程序(如 rshrloginsshsftp)进行登录。