Pam
kcheckpass 錯誤打開 /var/log/faillog
我看到以下錯誤:
$ 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
.