특정 시점에서 pam 처리를 종료하려면 pam_exec를 사용하십시오.

특정 시점에서 pam 처리를 종료하려면 pam_exec를 사용하십시오.

사용자가 직렬 콘솔을 통해 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 라인을 통해 처리될 수 있습니다.

관련 정보