Pam

kcheckpass 錯誤打開 /var/log/faillog

  • June 22, 2018

我看到以下錯誤:

$ journalctl -b -p3
-- Logs begin at Mon 2016-05-16 21:40:56 EDT, end at Wed 2016-07-27 22:30:13 EDT. --
Jul 27 22:22:26 x99 kcheckpass[5682]: pam_tally(kde:auth): Error opening /var/log/faillog for update
Jul 27 22:22:26 x99 kcheckpass[5682]: pam_tally(kde:auth): Error opening /var/log/faillog for read
Jul 27 22:22:26 x99 kcheckpass[5682]: pam_tally(kde:auth): Error opening /var/log/faillog for update
Jul 27 22:22:26 x99 kcheckpass[5682]: pam_tally(kde:auth): Error opening /var/log/faillog for read
Jul 27 22:22:26 x99 kcheckpass[5682]: pam_tally(kde:setcred): Error opening /var/log/faillog for update
Jul 27 22:22:26 x99 kcheckpass[5682]: pam_tally(kde:setcred): Error opening /var/log/faillog for update

kcheckpass 的手冊頁說:

kcheckpass - KDE 的認證程序

任何需要對使用者進行身份驗證的程序,例如帶有鎖定選項的螢幕保護程序,都可以使用 kcheckpass。kcheckpass 是一個簡單的 setuid 程序,如果使用者已通過身份驗證,則返回 0,否則返回 1。其他需要使用者認證的程序可以在沒有setuid狀態的情況下使用kcheckpass,從而簡化程序並增強系統安全性。

SECURITY
kcheckpass must be setuid on systems that use shadow passwords.

我知道 setuid 權限位告訴 Linux 使用所有者的有效使用者 id 而不是執行者執行程序。

但是,我不明白在這種情況下如何實施解決方案。我具體需要做什麼?

以下是 /var/log/faillog 的現有權限

$ ls -la /var/log/faillog 
-rw------- 1 root root 32096 Aug  9 12:56 /var/log/faillog

Arch Linux 論壇,有一個更好的答案:

編輯此文件並進行如下所述的 2 處更改(刪除一行並插入一個新行):

sudo nano /etc/pam.d/system-login

刪除這一整行:

auth       required   pam_tally.so         onerr=succeed file=/var/log/faillog

在其位置插入這一行:

auth       required   pam_tally2.so

創建日誌文件:

touch /var/log/tallylog
chmod 600 /var/log/tallylog

查看Arch 論壇的更多詳細資訊,了解為什麼這可能是更好的解決方案。

您可以執行以下命令:

sudo chmod +s /usr/lib/kcheckpass

根據您使用的發行版,它可能位於另一個目錄中,因此它可能是/usr/libexec/kcheckpass.

引用自:https://unix.stackexchange.com/questions/302381