6.8. pam_filter - 필터 모듈

pam_filter.so [ debug ] [ new_term ] [ non_term ] run1|run2 filter [ ... ]

6.8.1. 설명

이 모듈은 사용자와 응용 사이에 오가는 모든 입력/출력에 접근할 수 있는 기반이 되어 준다. tty 기반의 (stdin/stdout) 응용에만 적합하다.

이 모듈이 제 기능을 하려면 시스템에 필터가 설치돼 있어야 한다. 모듈에 딸려 있는 필터가 하나 있는데, 입력 및 출력 스트림에서 대소문자를 뒤바꾼다. (짜증을 불러일으킬 수 있으며 termcap 기반 편집기들이 제대로 동작하지 않게 된다.)

모든 모듈 종류에서 원하는 필터를 호출할 수 있다. 필터는 언제나 사용자가 아니라 호출 응용의 권한으로 execv(2)된다. 그래서 일반적으로 세션을 닫지 않는 한 사용자가 필터를 죽이지 못한다.

6.8.2. 옵션

debug

디버그 정보 찍기.

new_term

pam_filter의 기본 동작 방식은 사용자가 응용에 연결하는 데 쓰고 있는 터미널을 나타내도록 PAM_TTY를 설정하는 것이다. 이 인자는 필터링 되는 유사 터미널로 PAM_TTY를 설정해야 한다는 뜻이다.

non_term

PAM_TTY 항목을 설정하려 하지 않기.

runX

모듈에서 필터를 호출할 수 있으려면 언제 호출할지를 알아야 한다. 언제 호출할지 알려 주기 위해 이 인자가 필요하다.

X에 가능한 값은 12다. 그 값이 필터가 실행될 정확한 시점을 나타낸다. pam(3) 매뉴얼 페이지를 읽어 보면 이 개념을 이해하는 데 도움이 될 것이다. 기본적으로 각 관리 그룹마다 모듈 함수를 호출하는 방식이 최대 두 가지씩 있다. 실제로 authenticationsession 부문에는 두 가지 별개의 함수가 있다. 인증에서 그 함수는 pam_authenticate(3)pam_setcred(3)이며, 이때 run1pam_authenticate 함수에서 필터를 실행한다는 뜻이고 run2pam_setcred에서 필터를 실행한다는 뜻이다. 세션 모듈에서 run1pam_open_session(3) 단계에서 필터가 호출된다는 의미고 run2pam_close_session(3)을 나타낸다.

account 부문에서는 run1run2 어느 쪽도 쓸 수 있다.

password 부문에서 run1은 첫 번째 pam_chauthtok(3)에서 (PAM_PRELIM_CHECK 단계에서) 필터를 실행한다는 뜻이고 run2는 두 번째에서 (PAM_UPDATE_AUTHTOK 단계에서) 필터를 실행한다는 뜻이다.

filter

실행할 필터의 전체 경로와 필터에서 필요할 수도 있을 명령행 인자들.

6.8.3. 제공하는 모듈 종류

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

6.8.4. 반환 값

PAM_SUCCESS

새 필터를 성공적으로 설정했다.

PAM_ABORT

치명적 오류. 즉시 실행 중단.

6.8.5. 예시

/etc/pam.d/login에 다음 행을 추가하면 login으로 사용자 로그인 후 대소문자가 뒤바뀌게 할 수 있다.

        session required pam_filter.so run1 /lib/security/pam_filter/upperLOWER
      

6.8.6. 작성자

Andrew G. Morgan <morgan@kernel.org>이 pam_filter를 작성했다.