마지막 실행 PAM 모듈에서 인증 상태를 얻는 방법

마지막 실행 PAM 모듈에서 인증 상태를 얻는 방법

다음과 같은 PAM 스택이 있는 경우:

auth required default_pam.so
auth requisite my_custom_pam.so
....

사용자 정의 PAM 인증 모듈(예: 함수 pam_sm_authenticate)에서 사용하기 위해 마지막/이전 PAM 모듈 실행에서 인증 상태를 어떻게 얻을 수 있습니까?

답변1

먼저, 다른 모듈의 결과에 따라 모듈의 코드 논리를 변경하는 것은 다소 색다른 일이라는 점을 명심하십시오. 이는 일반적으로 어떤 상황에서 어떤 모듈이 호출되는지를 제어하는 required​​및 와 같은 제어 플래그를 사용하여 수행됩니다. requisite현재 체인 상태, 이전 모듈의 결과). 이를 염두에 두고 다음과 같이 모듈의 동작을 조정하는 것을 상상할 수 있습니다.

auth [success=1] default_pam.so
auth [success=done default=die] my_custom_pam.so default_failed
auth requisite my_custom_pam.so

체인에는 다음과 같은 논리가 있습니다.

  • 기본 모듈이 성공하면 검증된 것으로 표시하고(암시적으로 success=1) 모듈 1개를 건너뜁니다. 체인은 my_custom_pam인수 없이 호출에 도달하며 성공해야 합니다( requisite).
  • 기본 모듈이 실패하면 아무것도 건너뛰지 마십시오. 체인에 도달하면 my_custom_pam매개변수로 호출됩니다 default_failed. 체인은 이 모듈( done또는 die) 이후에 중지되고 전반적인 결과를 결정합니다.

여기서 핵심 요소는 에 전달되는 매개변수입니다 my_custom_pam. 루틴을 검사하면 argc현재 체인 상태에 따라 로직을 조정할 수 있습니다.argvpam_sm_authenticate

관련 정보