Linux
libpam_ldapd - pam_ldap(sshd:account): ‘無法辨識使用者’
我正在嘗試在 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); }*/