kcheckpass 打开 /var/log/faillog 时出错

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。其他需要用户认证的程序可以使用kcheckpass而不需要setuid状态,从而简化程序并增强系统安全性。

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

答案1

来自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

查看更多详细信息拱门论坛解释为什么这可能是更好的解决方案。

答案2

您可以运行此命令:

sudo chmod +s /usr/lib/kcheckpass

根据您使用的发行版,它可能位于另一个目录中,因此它可能是/usr/libexec/kcheckpass.

相关内容