6.6. pam_exec - 외부 명령 호출

pam_exec.so [ debug ] [ expose_authtok ] [ seteuid ] [ quiet ] [ quiet_log ] [ stdout ] [ log=file ] [ type=type ] command [ ... ]

6.6.1. 설명

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로 호출되는 명령들에선 사용자가 환경을 제어할 수 있다는 점을 염두에 둘 필요가 있다.

6.6.2. 옵션

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로 명령을 실행하게 된다.

6.6.3. 제공하는 모듈 종류

모든 모듈 타입(auth, account, password, session)을 제공한다.

6.6.4. 반환 값

PAM_SUCCESS

외부 명령을 성공적으로 실행했다.

PAM_BUF_ERR

메모리 버퍼 오류.

PAM_CONV_ERR

응용에서 제공한 대화 함수에서 사용자명을 얻는 데 실패했다.

PAM_INCOMPLETE

응용에서 제공한 대화 함수에서 PAM_CONV_AGAIN을 반환했다.

PAM_SERVICE_ERR

인자를 주지 않았거나 틀리게 줬다.

PAM_SYSTEM_ERR

시스템 오류가 발생했거나 실행 명령이 실패했다.

PAM_IGNORE

명령을 실행하지 않는 pam_setcred가 호출됐다. 또는 type= 매개변수에 준 값이 모듈 타입과 일치하지 않는다.

6.6.5. 예시

/etc/pam.d/passwd에 다음 행을 추가하면 로컬 패스워드 변경 시마다 NIS 데이터베이스를 재구축한다.

        password optional pam_exec.so seteuid /usr/bin/make -C /var/yp
      

실효 사용자 ID로 다음 명령을 실행하게 된다.

make -C /var/yp

6.6.6. 작성자

Thorsten Kukuk <kukuk@thkukuk.de>과 Josh Triplett <josh@joshtriplett.org>이 pam_exec를 작성했다.