pam_lastlog は /var/log/lastlog に書き込まれません。

pam_lastlog は /var/log/lastlog に書き込まれません。

使っていますパメラJupyterHubを使用して自分のユーザーのPAMセッションを開きます。私はCentOS 8を使用しており、ログインサービスを使用しています。 /var/log/secureで見ることができます

pam_unix(login:session): ユーザー testuser のために (uid=0) によって開かれたセッション

そして/var/log/messages

systemd[1]: testuser ユーザーのためにセッション 8341 が開始されました。

また、/var/log/{messages|secure|audit/audit.log} にはエラーは記録されません。ただし、新しいユーザーがJupyterHubに正常にログインすると、lastlogコマンドはまだユーザーがログインしていないことを示します。そのため、/var/log/lastlogに情報を書き込むために、pam_lastlogに関するいくつかの要件がありません。 pam_open_session は root 権限を持つ子プロセスで呼び出されます。 /var/log/lastlogに役立つ情報を書き込むには、このサブプロセスをptsまたはttyにバインドする必要があります。これは /etc/pamd.d/login ファイルです:

#%PAM-1.0
auth       substack     system-auth
auth       include      postlogin
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
-session   optional     pam_ck_connector.so

これは /etc/pamd.d/postlogin にあります。

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authselect is run.

session optional                   pam_umask.so silent
session [success=1 default=ignore] pam_succeed_if.so service !~ gdm* service !~ su* quiet
session [default=1]                pam_lastlog.so nowtmp showfailed
session optional                   pam_lastlog.so silent noupdate showfailed

これは /etc/pamd.d/system-auth にあります。

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authselect is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so try_first_pass nullok
auth        required      pam_deny.so

account     required      pam_unix.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so try_first_pass use_authtok nullok sha512 shadow
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

答え1

ファイルには、次の行の説明が/etc/pam.d/postlogin含まれています。nowtmp

session [default=1] pam_lastlog.so nowtmp showfailed

から$ man pam_lastlog

       nowtmp
           Don't update the wtmp entry.

コマンドはファイルをlast使用します。/var/log/wtmplastlog/var/log/lastlog

lastlogwtmp通常、各ユーザーの最後のログインだけが記録されるため、ファイルよりはるかに小さいです。wtmp録音する歴史~のみんなユーザーのログイン時間と日付。

マニュアルページには最後のロギングをオフにする指示がないように見えるpam_lastlog.soため、この機能はすべてのアカウントで利用できます。このディレクティブにはtoディレクティブがありますnowtmp

ただし、履歴ログイン情報の書き込みをオフにすることができるので、wtmpそのnowtmpディレクティブのみを削除して違いがあるかどうかを確認してください。

答え2

ログインサービスでは、自動、noupdate、およびshowfailedを含むpostlogin行が使用されます。noupdate明らかにpam_lastlog更新すべきではないという意味です。すべてのファイル。したがって、この行ではpam_lastloglastlogの更新は許可されません。

それする失敗したログインはまだどこかに記録されていますが、成功したログインではないようです。これにより、gdm*またはsu*サービスを使用してログインが成功した場合にのみ失敗したログイン数がリセットされます。

関連情報