pam_filter.so
[
debug
] [
new_term
] [
non_term
]
run1|run2
filter
[
...
]
이 모듈은 사용자와 응용 사이에 오가는 모든 입력/출력에 접근할 수 있는 기반이 되어 준다. tty 기반의 (stdin/stdout) 응용에만 적합하다.
이 모듈이 제 기능을 하려면 시스템에 필터가 설치돼 있어야 한다. 모듈에 딸려 있는 필터가 하나 있는데, 입력 및 출력 스트림에서 대소문자를 뒤바꾼다. (짜증을 불러일으킬 수 있으며 termcap 기반 편집기들이 제대로 동작하지 않게 된다.)
모든 모듈 종류에서 원하는 필터를 호출할 수 있다. 필터는 언제나 사용자가 아니라 호출 응용의 권한으로 execv(2)된다. 그래서 일반적으로 세션을 닫지 않는 한 사용자가 필터를 죽이지 못한다.
debug
디버그 정보 찍기.
new_term
pam_filter의 기본 동작 방식은 사용자가 응용에 연결하는 데 쓰고 있는 터미널을 나타내도록 PAM_TTY를 설정하는 것이다. 이 인자는 필터링 되는 유사 터미널로 PAM_TTY를 설정해야 한다는 뜻이다.
non_term
PAM_TTY 항목을 설정하려 하지 않기.
runX
모듈에서 필터를 호출할 수 있으려면 언제 호출할지를 알아야 한다. 언제 호출할지 알려 주기 위해 이 인자가 필요하다.
X에 가능한 값은
1과 2다.
그 값이 필터가 실행될 정확한 시점을 나타낸다.
pam(3)
매뉴얼 페이지를 읽어 보면 이 개념을 이해하는 데 도움이 될 것이다.
기본적으로 각 관리 그룹마다 모듈 함수를 호출하는 방식이
최대 두 가지씩 있다.
실제로 authentication 및
session 부문에는
두 가지 별개의 함수가 있다. 인증에서 그 함수는
pam_authenticate(3)와
pam_setcred(3)이며, 이때 run1
은
pam_authenticate
함수에서 필터를
실행한다는 뜻이고 run2
는
pam_setcred
에서 필터를 실행한다는
뜻이다. 세션 모듈에서 run1은
pam_open_session(3) 단계에서
필터가 호출된다는 의미고 run2는
pam_close_session(3)을 나타낸다.
account 부문에서는 run1과 run2 어느 쪽도 쓸 수 있다.
password 부문에서 run1은 첫 번째 pam_chauthtok(3)에서 (PAM_PRELIM_CHECK 단계에서) 필터를 실행한다는 뜻이고 run2는 두 번째에서 (PAM_UPDATE_AUTHTOK 단계에서) 필터를 실행한다는 뜻이다.
filter
실행할 필터의 전체 경로와 필터에서 필요할 수도 있을 명령행 인자들.
/etc/pam.d/login
에 다음 행을 추가하면
login으로 사용자 로그인 후 대소문자가 뒤바뀌게 할 수 있다.
session required pam_filter.so run1 /lib/security/pam_filter/upperLOWER