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 は、ユーザーが認証された場合は 0 を返し、そうでない場合は 1 を返す単純な setuid プログラムです。ユーザー認証を必要とする他のプログラムは 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

答え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

関連情報