我正在尝试配置 Ubuntu 10.04,以便可以使用 ldap 凭据登录。
我遵循了在我发现的几个教程中概述的这些常规配置步骤:
1)安装库:
sudo apt-get install libpam-ldap libnss-ldap nss-updatedb libnss-db nscd
2)在 libnss_ldap 提示时输入连接详细信息
3)配置nsswitch.conf以使用ldap:
...
passwd: files ldap
group: files ldap
shadow: files ldap
...
4)配置pam.d common-*文件
以下是“common-auth”的内容:
auth [success=2 default=ignore] pam_unix.so nullok_secure
auth [success=1 default=ignore] pam_ldap.so use_first_pass
# here's the fallback if no module succeeds
auth requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth required pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config
我已在 2 台 Linux 服务器上尝试过此操作。似乎都无法识别任何 ldap 用户。例如,getent passwd <ldap username>
不返回任何内容。id <ldap username>
返回no such user
。
如果我尝试使用我的 ldap 凭证进行 ssh,我会在 auth.log 中看到以下内容:
Jun 2 14:16:50 hostnameXX sshd[1527]: pam_unix(sshd:auth): check pass; user unknown
Jun 2 14:16:50 hostnameXX sshd[1527]: pam_unix(sshd:auth): authentication failure; logname=uid=0 euid=0 tty=ssh ruser= rhost=xx.xx.xx.xx
更新
我取消了 ldap.conf 中的以下内容的注释:
nss_base_passwd ou=xxx,dc=xxx,dc=xxx
nss_base_shadow ou=xxx,dc=xxx,dc=xxx
nss_base_group ou=xxx,dc=xxx,dc=xxx
现在取得了一些进展 - 我现在在 auth.log 中看到了这一点:
Jun 2 16:15:03 <hostname> sshd[1566]: pam_ldap: error trying to bind as user cn=xxxx,ou=xxx,dc=xxx,dc=xx" (Invalid credentials)
Jun 2 16:15:05 <hostname> sshd[1566]: Failed password for invalid user xxxx from xx.xx.xx.xx port xxxx ssh2
如果我使用ldapsearch
与 ldap.conf 中指定的相同的主机和基本 DN,我可以成功查询并找到我的 ldap 用户帐户。
我遗漏了什么?也许需要启动某些服务?非常感谢您的帮助。
答案1
我以调试模式启动了 nslcd:nslcd -d
并在语句中看到它正在寻找对象类 posixAccount。我的 LDAP 中的所有条目都是 inetOrgPerson 类型。我必须在 slapd.conf 文件中包括 nis.schema,然后将 posixAccount 作为辅助对象类添加到每个条目。然后,我终于可以使用 getent 查看 LDAP 中的帐户。
交叉发布于此:
答案2
pam 模块中是否有 pam_ldap?如果没有,则可以解释此行为。
答案3
我们的 (Centos) 系统使用 LDAP(针对 Active Directory)。您是否设置了 /etc/ldap.conf?我们的系统将 nss_* 标签映射到 LDAP 中的 DN。如果您还没有这样做,它不太可能起作用。查看此openldap 身份验证教程。
有一项服务可能会有所帮助,nscd
即名称服务缓存守护程序。顾名思义,它只是缓存,因此不太可能是您的难题,但一旦您弄清楚了问题所在,它可能会有所帮助。它有时会“卡住”,当它无法正确刷新缓存时,我们必须将其恢复。