pam_exec.so
[
debug
] [
expose_authtok
] [
seteuid
] [
quiet
] [
quiet_log
] [
stdout
] [
log=file
] [
type=type
]
command
[
...
]
pam_exec는 외부 명령을 실행하는 데 쓸 수 있는 PAM 모듈이다.
pam_getenvlist(3)가
반환하는 현재 PAM 환경 목록 그대로 자식의 환경이 설정된다.
더불어 PAM 항목 PAM_RHOST,
PAM_RUSER, PAM_SERVICE,
PAM_TTY, PAM_USER,
PAM_TYPE을 환경 변수로
내보낸다. PAM_TYPE에는
모듈 타입 account
, auth
,
password
, open_session
,
close_session
중 하나가 들어간다.
pam_exec로 호출되는 명령들에선 사용자가 환경을 제어할 수 있다는 점을 염두에 둘 필요가 있다.
debug
디버그 정보 찍기.
expose_authtok
인증인 경우 호출 명령이 stdin(3)에서 패스워드를 읽어 들일 수 있다. 패스워드의 처음 PAM_MAX_RESP_SIZE 바이트만 제공된다.
log=file
명령의 출력이 file
에
덧붙어 기록된다.
type=type
모듈 타입이 지정한 타입과 일치하는 경우에만 명령을 실행한다.
stdout
기본적으로 실행 명령의 출력이 /dev/null
로 기록된다. 이 옵션을 쓰면 실행 명령의 stdout 출력이 호출 응용으로 재지향된다. 그 출력이 어떻게 되는지는 응용에게 달려 있다. log
옵션은 무시된다.
quiet
기본적으로 pam_exec.so는 외부 명령 실패 시 종료 상태 정보를 찍는다. 이 옵션을 지정하면 그 메시지를 찍지 않는다.
quiet_log
기본적으로 pam_exec.so는 외부 명령 실패 시 종료 상태 정보를 로그로 남긴다. 이 옵션을 지정하면 그 로그 메시지를 찍지 않는다.
seteuid
기본적으로 pam_exec.so는 호출 프로세스의 실제 사용자 ID로 외부 명령을 실행한다. 이 옵션을 지정하면 실효 사용자 ID로 명령을 실행하게 된다.
외부 명령을 성공적으로 실행했다.
메모리 버퍼 오류.
응용에서 제공한 대화 함수에서 사용자명을 얻는 데 실패했다.
응용에서 제공한 대화 함수에서 PAM_CONV_AGAIN을 반환했다.
인자를 주지 않았거나 틀리게 줬다.
시스템 오류가 발생했거나 실행 명령이 실패했다.
명령을 실행하지 않는 pam_setcred
가
호출됐다. 또는 type= 매개변수에 준 값이 모듈 타입과
일치하지 않는다.
/etc/pam.d/passwd
에 다음 행을 추가하면
로컬 패스워드 변경 시마다 NIS 데이터베이스를 재구축한다.
password optional pam_exec.so seteuid /usr/bin/make -C /var/yp
실효 사용자 ID로 다음 명령을 실행하게 된다.
make -C /var/yp