내 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.so
pam_permit.so
pam_unix
default=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.