pam_exec에게 현재 사용자로 스크립트를 실행하도록 어떻게 지시할 수 있나요?

pam_exec에게 현재 사용자로 스크립트를 실행하도록 어떻게 지시할 수 있나요?

세션이 열리면 세션을 연 사용자로 스크립트를 실행해야 합니다.

/etc/pam.d/common-session에 다음을 추가했습니다.

session optional        pam_exec.so      log=/tmp/test_pam_foo.log /usr/local/bin/test_pam_foo.sh

또한 pam_exec 옵션을 활성화해 보았습니다.seteuid

기본 스크립트 /usr/local/bin/test_pam_foo.sh:

#!/bin/sh
id -u >> /tmp/test_pam_foo
id -ru >> /tmp/test_pam_foo

불행히도 0유효한 ID와 실제 ID를 계속 얻습니다.

내가 뭐 놓친 거 없니?

대안으로 나는 존재한다는 것을 알고 있습니다.pam_script, 상호작용하지 마세요팸 스크립트.

pam_script는 기본적으로 현재 사용자로 실행되며 선택적으로 runas강제로 루트로 실행될 수 있습니다. 하지만 내 배포판(Ubuntu 12.04)에 이미 패키지되어 있는 pam 라이브러리를 사용하는 데 우선순위를 두고 싶습니다.

답변1

글쎄, 당신은 가질 수 있습니다/usr/local/bin/test_pam_foo.sh

PAM_USER환경 변수에 있는 대로 사용자를 변경합니다 .

pam_exec사용자가 환경에 대해 가질 수 있는 잠재적 제어에 대한 매뉴얼 페이지의 참고 사항을 참고하십시오 (이를 사용하는 서비스(예: su)에 따라 다름). 따라서 스크립트를 사용하는 것은 아마도 좋은 생각이 아닐 것입니다(다른 문제가 있는 변수를 수정하더라도 $PATHbash 스크립트의 SHELLOPTS 또는 BASH_ENV와 같이 아무것도 할 수 없는 변수가 있을 것입니다).

스크립트를 호출하기 전에 래퍼를 사용하여 사용자를 변경하는 것이 좋습니다.

관련 정보