사용자가 직렬 콘솔을 통해 Linux 호스트에 로그인할 수 있는 방법을 제한/정의하기 위해 사용자 정의 pam 규칙을 작성 중입니다.
사용자가손님로그인 후 다른 사용자가 자신의 비밀번호를 확인하고 pam_unix.so
내 사용자 정의 인증자가 동일한 작업을 수행하고신원 확인에 대한 최종 결정즉, 후속 pam 모듈이 전혀 호출되는 것을 원하지 않습니다.
이것은 내 최소 작업 /etc/pam.d/login
파일입니다.
# On success skip the next rule
auth [success=1 default=ignore] pam_succeed_if.so user in guest
auth [success=done default=ignore] pam_exec.so expose_authtok /usr/bin/custom-pam.sh
auth [success=1 default=ignore] pam_unix.so nullok
auth requisite pam_deny.so
auth required pam_permit.so
위 구성은 게스트로 로그인하면 예상대로 작동하지만( /var/log/journal
이 역시 확인함) 다른 사용자에게는 실패합니다.
0으로 종료 되면 /usr/bin/custom-pam.sh
후속 모듈의 처리가 중지될 것으로 예상됩니다. 내가 이해한 바로는 success=done
즉시 반환되어야 하는데 그렇지 않습니다.
답변1
PAM sufficient
제어를 사용해 보셨나요? 모든pam.conf(5)
sufficient
if such a module succeeds and no prior required module has failed
the PAM framework returns success to the application or to the
superior PAM stack immediately without calling any further modules
in the stack. A failure of a sufficient module is ignored and
processing of the PAM module stack continues unaffected.
이렇게 하면 사용자 정의 행 처리가 중지됩니다.
auth sufficient pam_exec.so expose_authtok /usr/bin/custom-pam.sh
실패하지 않는 한, 이는 후속 nope-denying-you-here 라인을 통해 처리될 수 있습니다.