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은 루트 권한을 가진 하위 프로세스에서 호출됩니다. /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* 서비스를 사용하여 로그인에 성공한 경우에만 실패한 로그인 횟수가 재설정됩니다 .

관련 정보