lastlog
사용자가 로그인하면 SSH 로그인을 모니터링하는 다른 애플리케이션에서 사용할 수 있도록 명령을 사용자 정의 파일로 구문 분석합니다.
나는 /etc/pam.d/sshd
그 줄과 맨 아래 부분을 포함시켰습니다:
session optional pam_exec.so seteuid /usr/local/bin/run_on_login.sh
이 작품에는 한 가지 큰 단점이 있습니다. 스크립트가 이전에 실행되었거나 /var/log/lastlog
업데이트 /var/log/wtmp
되었습니다. 스크립트를 실행하기 전까지는 성공적인 로그인이 완료된 것으로 간주되지 않기 때문인 것 같습니다.
실을 넣어보려고 했는데 /etc/pam.d/login
별 차이가 없는 것 같았습니다.
전체 로그인 프로세스가 완료된 후(로그 쓰기 포함) pam_exec 스크립트를 실행할 수 있는 방법이 있습니까?
답변1
/usr/local/bin/run_on_login.sh
처음에 백그라운드 프로세스로 실행되고 몇 초간 기다린 다음 "마지막" 명령을 구문 분석하는 다른 스크립트를 포크하여 이 문제를 해결할 수 있었습니다 .
예를 들어 pam_exec는 다음 스크립트를 실행합니다.
#!/bin/bash
# /usr/local/bin/run_on_login.sh
nohup /usr/local/bin/parse_last.sh >/dev/null 2>&1 &
이 스크립트를 트리거하는 것은 다음과 같습니다.
#!/bin/bash
# /usr/local/bin/parse_last.sh
sleep 5
# (truncated for brevity)
last -iF | head -n 50 | awk '{print "something"}'