次のエラーが表示されます。
$ 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
。