Linux

libpam_ldapd - pam_ldap(sshd:account): ‘無法辨識使用者’

  • March 13, 2012

我正在嘗試在 Ubuntu/Debian 虛擬機上測試 libpam_ldapd 的安裝過程。

我關閉了 nscd / nslcd 服務,並且正在查看 and 的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-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]

為了避免使用 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);
}*/

引用自:https://serverfault.com/questions/278441