我正在尝试设置一个 Ubuntu 12.04 服务器,以便远程 ldap 服务器中具有有效帐户的用户可以登录到 ubuntu 服务器。
我严格遵循了本指南:http://wiki.linuxquestions.org/wiki/Pam_ldap。
当我尝试通过 ssh 进入该机器时,我在 /var/log/auth.log 中看到的内容如下前输入我的密码:
Connection from 192.168.0.10 port 36624
Invalid user bentrupk from 192.168.0.10
input_userauth_request: invalid user bentrupk [preauth]
但是,使用数据包嗅探器,我还看到使用我的用户名对 ldap 服务器进行成功查询,该查询返回了 ldap 中的我的 DN。
然后我输入密码,但数据包嗅探器显示具有正确 DN 的 ldap 绑定请求,但密码为“....不正确”。
显然,这不是我输入的密码。
我假设这是我的一个或多个 pam.d 配置文件的问题。
我想知道 auth.log 中的“无效用户”是否有提示?在我输入密码之前,显然已经使用 ssh 提供的用户名向 ldap 服务器发出了请求,并成功返回了正确的条目。
但是,我不清楚哪个先发生:auth.log 中的“无效用户”或数据包嗅探器中看到的 ldap 搜索(只是为了清楚起见,ssh 用户没有本地帐户)。
我该怎么做才能进一步调试或确认我的配置正确?
答案1
我对 PAM 模块的功能做出了错误的假设。我假设在 LDAP 中拥有一个帐户实际上可能会导致模块在系统上创建用户(这个假设可能受到我的 webdev 背景的影响),就像它也可以创建主目录一样(pam_mkhomedir
)。
一旦我在本地创建了用户,请使用:
sudo adduser doej --disabled-password
我能够使用 LDAP 中的 doej 帐户登录。
顺便说一句,我发现了一个解决方案使用pam_exec
它也允许我动态地创建用户。
答案2
无需本地帐户即可让 ldap 帐户登录。
也许当它无法在 ldap 中找到正确的用户时,它会恢复到本地创建的用户帐户。
无效用户错误提示您的 ldap 服务器中的查找没有返回您尝试验证的用户帐户。
在你的 ldap 服务器中启用调试: 用这些行创建一个 ldiff 文件
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats
并使用以下命令将 ldif 文件导入到你的 ldap 服务器:
ldapadd -x -W -D 'cn=Manager,dc=pvpsc,dc=com' -f increaseverbosity.ldiff
这会将对您的 ldap 进行的 ldap 查询记录到服务器的系统日志中。使用 ldapsearch 工具搜索您的 ldap 服务器并读出用户的用户名。将成功的日志与失败的身份验证创建的日志进行比较。
有什么不同?这可能就是你发现错误的地方。