SSH를 통해 시스템에 로그인하고 있는데 의도적 인 로그 아웃 (쉘 종료)이든 SSH 연결이 끊어 졌거나 종료 되었든 로그 아웃시 명령을 강제로 실행하고 싶습니다. 이것을 설정하는 방법이 있습니까? 가장 좋은 추측은 로그인 쉘을 SSH 종료시 전송 된 신호를 가로 채 (SIGHUP?)하는 프로그램으로 변경하고 명령을 실행하는 것입니다. 그러나 더 깨끗한 솔루션이 있는지 궁금합니다.
답변
이를 수행하는 가장 좋은 방법은 pam 을 사용하는 것 입니다.
에서 /etc/pam.d
여러 개의 파일이있을 것이다, 그들 중 하나가 호출된다 sshd
. 다른 로그인 (예 : GUI 또는 실제 TTY)이 아닌 ssh에만 영향을 주려면이 파일이 필요합니다.
모든 로그인에 영향을 주려면 ‘공통’파일이 필요합니다. 이 ‘공통’파일의 이름은 배포판에 따라 다르지만 기본 파일에 도달 할 때까지 파일 의 include
and substack
문을 따라 sshd
파일을 추적 할 수 있습니다 .
/etc/pam.d
사용하려는 파일을 식별했으면 session
섹션에 다음과 같은 줄을 추가 하십시오.
session optional pam_exec.so quiet /etc/pam_session.sh
이로 인해 /etc/pam_session.sh
누군가가 로그인하거나 로그 아웃 할 때마다 (우아한 상태 또는 우아하지 않은 상태로) 전화하게됩니다.
이제 당신은 생성해야합니다 /etc/pam_session.sh
. 다음은 누군가 로그 아웃 할 때마다 무언가를 실행하는 데 사용할 수있는 예입니다.
#!/bin/sh
if [ "$PAM_TYPE" = "close_session" ]; then
something
fi
( chmod a+x
스크립트를 잊지 마세요 )