在登录过程中,LDAP 客户机使用 PAM 模块 进行用户验证。在使用标准的 UNIX PAM 模块时,口令是从服务器读取并在客户端上检查的。这可能会由于以下某种原因而失败:
ldap 未由 /etc/nsswitch.conf 文件中的 passwd 服务使用。
代理无法读取服务器列表中用户的 userPassword 属性。必须至少允许一个代理读取口令,因为该代理可以将口令返回给客户机进行比较。pam_ldap 不需要对口令具有读取访问权限。
代理可能没有正确的口令。
该项没有 shadowAccount 对象类。
没有为该用户定义口令。
在使用 ldapaddent 时,必须使用 -p 选项来确保已向该用户项中添加了口令。如果使用不带 -p 选项的 ldapaddent,用户的口令将不存储在目录中,除非使用 ldapaddent 另外添加了 /etc/shadow 文件。
没有可访问的 LDAP 服务器。
检查服务器的状态。
# /usr/lib/ldap/ldap_cachemgr -g |
pam.conf 的配置有误。
没有在 LDAP 名称空间中定义该用户。
NS_LDAP_CREDENTIAL_LEVEL 对于 pam_unix 设置为 anonymous,而且 userPassword 对于匿名用户不可用。
口令没有以 crypt 格式存储。
如果所配置的 pam_ldap 支持帐户管理,则登录失败可能是由以下某种原因引起的:
用户的口令已过期。
用户的帐户由于登录失败尝试的次数过多而被锁定。
用户的帐户已经由管理员停用。
用户尝试通过不使用口令的程序(如 rsh、rlogin、ssh 或 sftp)进行登录。