pam: 로그인 시 작업(실패)

pam: 로그인 시 작업(실패)

에 전달하는 방법을 알고 있지만 /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

관련 정보