libpam_ldapd-pam_ldap(sshd:account):'无法识别用户'

libpam_ldapd-pam_ldap(sshd:account):'无法识别用户'

我正在尝试在 Ubuntu/Debian 虚拟机上测试 libpam_ldapd 的安装过程。

我已关闭 nscd / nslcd 服务,并且正在观察nslcd -d和的输出/var/log/auth.log

我设置的过滤器/地图nslcd.conf工作正常,我仅使用 ldap 来输入密码 - 这意味着我只想检查系统上已存在的帐户的密码,因此我只使用:

shadow files ldap在 /etc/nsswitch.conf 中

输出nslcd -d表明绑定工作正常,但身份验证日志指出:

sshd[]: pam_ldap(sshd:auth): username changed from rovangju to RovangJu
sshd[]: pam_unix(sshd:account): could not identify user (from getpwnam(RovangJu))
sshd[]: Failed password for rovangju from 127.0.0.1 port 44245 ssh2

尝试 SSH 登录的控制台没有收到任何错误:

rovangju@vbox-u64:~$ ssh 0
rovangju@0's password: [enter correct password]
Connection closed by 127.0.0.1

显然,绑定使用的是 ldap 属性中的 cn/uid,这是一个大写字母的用户名,但 unix 用户名都是小写的。有人知道如何解决这个问题吗?

我发现最接近这个问题的是这里: http://forums.opensuse.org/english/get-technical-help-here/install-boot-login/445925-pam_ldap-username-case-sensitivity-opensuse-11-2-a.html

提前致谢!

编辑:另一个问题是:出于某种原因,我可以通过这样做来欺骗模块:

rovangju@vbox-u64:~$ ssh 0
rovangju@0's password: [enter WRONG password]
Permission denied, please try again
rovangju@0's password: [enter CORRECT password]
[and bingo, I'm in]

答案1

为了避免使用 ldap 中的用户名(大写)的问题 - 我从源代码中注释掉了一个块:

nss-pam-ldapd-0.xx/nslcd/pam.c: L120-125

/* check if the username is different and update it if needed */
/*if (strcmp(username,value)!=0)
{
  log_log(LOG_INFO,"username changed from \"%s\" to \"%s\"",username,value);
  strcpy(username,value);
}*/

相关内容