로그인 실패 시 PAM을 올바르게 사용하여 스크립트를 실행하는 방법

로그인 실패 시 PAM을 올바르게 사용하여 스크립트를 실행하는 방법

내 Arch Linux 시스템에서 로그인에 실패하면 플러그형 인증 모듈을 사용하여 스크립트를 실행하려고 합니다. 아치 리눅스에는 범용 검증 파일이 없어서 만들지 않기로 결정했습니다. 대신 PAM 스택이 일부 기능에 시스템 인증 파일을 사용한다는 사실을 발견하고 이를 편집하기로 결정했습니다.

원본 시스템 인증 파일은 다음과 같습니다

#%PAM-1.0

auth      required  pam_unix.so     try_first_pass nullok
auth      optional  pam_permit.so
auth      required  pam_env.so

account   required  pam_unix.so
account   optional  pam_permit.so
account   required  pam_time.so

password  required  pam_unix.so     try_first_pass nullok sha512 shadow
password  optional  pam_permit.so

session   required  pam_limits.so
session   required  pam_unix.so
session   optional  pam_permit.so


로그인 실패시 스크립트를 실행하기 위해 다음과 같이 인증 블록을 변경했습니다.

auth      [success=1 default=ignore]  pam_unix.so     try_first_pass nullok
auth      optional  pam_exec.so <path to the script file>
auth      optional  pam_permit.so
auth      required  pam_env.so

account   required  pam_unix.so
account   optional  pam_permit.so
account   required  pam_time.so

password  required  pam_unix.so     try_first_pass nullok sha512 shadow
password  optional  pam_permit.so

session   required  pam_limits.so
session   required  pam_unix.so
session   optional  pam_permit.so

sudo 명령은 내 시스템의 PAM 스택에 있는 이 시스템 인증 파일을 사용하는 명령 중 하나입니다. 그런데 위와 같이 파일을 편집한 후 sudo 명령을 사용하려고 하면 잘못된 비밀번호를 입력해도 sudo 명령이 실행됩니다.

누구든지 여기서 무엇이 잘못되었는지 알려주고 수정하도록 도와주시면 매우 감사하겠습니다.

답변1

~에서man pam.d,설명하다 required:

required
   [success=ok new_authtok_reqd=ok ignore=ignore default=bad]

을 사용하면 스크립트가 사용되고 항상 성공 하므로 default=ignore실패로 인해 pam_unix더 이상 인증이 실패하지 않습니다 . 다음도 있어야 합니다 .pam_permit.sopam_permit.sopam_unixdefault=bad

bad
   this action indicates that the return code should be thought of as
   indicative of the module failing. If this module is the first in
   the stack to fail, its status value will be used for that of the
   whole stack.

관련 정보