에 전달하는 방법을 알고 있지만 /etc/profile
로그인이 성공한 후에만 실행됩니다. 로그인이 실패하더라도 작업을 수행할 수 있도록 하고 싶습니다. 예를 들어 스크립트를 실행합니다 script.sh
.
에서 설정할 수 있을 것 같은데 pam
어디서부터 시작해야 할지 모르겠습니다.
답변1
pam_exec
모듈과 몇 가지 트릭을 사용하여 PAM
이를 수행 할 수 있습니다 . PAM
구성은 배포판마다 매우 다른 경우가 많으므로 구성을 이해하고 조정해야 합니다.
Debian의 경우(7.1로 테스트됨) 편집 /etc/pam.d/common-auth
(명확성을 위해 주석은 생략됨)
앞으로
auth [success=1 default=ignore] pam_unix.so nullok_secure auth requisite pam_deny.so auth required pam_permit.so
뒤쪽에
auth [success=2 default=ignore] pam_unix.so nullok_secure auth optional pam_exec.so /common-auth-pam_exec auth requisite pam_deny.so auth required pam_permit.so
실제로 일어나는 일은 pam_unix.so
성공하면 다음 2개의 모듈을 건너뛰고 pam_permit.so
항상 성공하는 모듈로 점프한다는 것입니다. 인증이 실패하면 PAM
먼저 스크립트를 계속 실행한 다음 실행하세요 . 이 모듈은 항상 실패하며 제어 플래그를 pam_deny
설정하므로 다른 모듈은 실행되지 않습니다.requisite
완전성을 위해 프로그램은 pam_exec
호출 프로세스의 실제 사용자 ID로 실행하여 생성되며( setuid
옵션은 유효한 사용자 ID로 실행되도록 함) 프로세스 환경은 다음과 같습니다.
PAM_SERVICE=login
PAM_RHOST=
PAM_USER=<username_here>
PAM_TYPE=auth
PAM_TTY=/dev/tty1