web-dev-qa-db-ja.com

libpam_ldapd-pam_ldap(sshd:account): 'ユーザーを識別できませんでした'

Ubuntu/Debian仮想マシンでlibpam_ldapdのインストール手順をテストしようとしています。

Nscd/nslcdサービスをオフにしていて、nslcd -d/var/log/auth.logからの出力を監視しています。

nslcd.confで設定したフィルター/マップは正しく機能しています。パスワードにはLDAPのみを使用しています。つまり、システムに既に存在するアカウントのパスワードのみを確​​認したいので、使用しているのは:

/etc/nsswitch.confのshadow files ldap

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 -sensitive-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
thinice

使用されているLDAPからのユーザー名の問題を回避するために(大文字で)-ソースコードからブロックをコメントアウトしました:

nss-pam-ldapd-0.x.x/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);
}*/
1
thinice