在登录期间,LDAP 客户机使用 PAM 模块进行用户验证。在使用标准的 UNIX PAM 模块时,口令是从服务器读取并在客户机端检查的。该过程可能会因下列原因之一而失败:
ldap 未与名称服务转换中的 passwd 数据库相关联。
代理无法读取服务器列表中用户的 userPassword 属性。您需要至少允许一个代理可以读取口令,因为该代理需要将口令返回给客户机进行比较。pam_ldap 不需要对口令具有读取访问权限。
代理可能没有正确的口令。
该项没有 shadowAccount 对象类。
没有为该用户定义口令。
在使用 ldapaddent 时,必须使用 –p 选项确保已向该用户项中添加了口令。如果您使用不带有 –p 选项的 ldapaddent,用户的口令将不存储在目录中,除非使用 ldapaddent 另外添加了 /etc/shadow 文件。
没有可访问的 LDAP 服务器。
检查服务器的状态。
# /usr/lib/ldap/ldap_cachemgr -g
pam.conf 的配置有误。
没有在 LDAP 名称空间中定义该用户。
为 pam_unix_* 模块将 NS_LDAP_CREDENTIAL_LEVEL 设置为了 anonymous,且 userPassword 对匿名用户不可用。
口令没有以 crypt 格式存储。
如果所配置的 pam_ldap 支持帐户管理,则登录失败可能是由以下某种原因引起的:
用户的口令已过期。
用户的帐户由于登录失败尝试的次数过多而被锁定。
用户的帐户已被管理员停用。
用户尝试使用非基于口令的程序(例如 ssh 或 sftp)进行登录。
如果使用了每用户验证方式和 sasl/GSSAPI,则 Kerberos 的某个组件或 pam_krb5 配置设置有误。有关解决这些问题的详细信息,请参阅在 Oracle Solaris 11.2 中管理 Kerberos 和其他验证服务 。