6.38. pam_xauth - 사용자 간 xauth 키 전달

pam_xauth.so [ debug ] [ xauthpath=/path/to/xauth ] [ systemuser=UID ] [ targetuser=UID ]

6.38.1. 설명

pam_xauth는 사용자 간에 xauth 키("쿠키"라고도 함)를 전달하기 위해 만들어진 PAM 모듈이다.

pam_xauth가 없으면 xauth가 켜져 있고 사용자가 su(1) 명령으로 다른 사용자의 권한을 획득하는 경우에 그 사용자가 원래 사용자의 X 디스플레이에 접근할 수 없게 된다. 디스플레이에 접근하는 데 필요한 키를 새 사용자가 가지고 있지 않기 때문이다. pam_xauth는 세션이 생성될 때 su를 실행하는 사용자(출발 사용자)의 키를 그 사용자가 획득하는 신원의 사용자(대상 사용자)에게로 전달하고 세션이 사라질 때 그 키를 파기해서 문제를 해결해 준다.

그래서 예를 들어 xterm 세션에서 su(1)를 실행할 때 xauth(1) 명령이나 ~/.Xauthority 파일을 따로 건드리지 않고도 X 프로그램을 실행할 수 있게 된다.

xauth가 $DISPLAY 환경 변수에 연결된 키를 나열해 줄 수 있는 경우에만 pam_xauth가 키를 전달하게 된다.

호출측 사용자 홈 디렉터리의 ~/.xauth/export와 대상 사용자 홈 디렉터리의 ~/.xauth/import로 기초적인 접근 제어가 가능하다.

사용자에게 ~/.xauth/import 파일이 있으면 그 파일에 나열된 사용자로부터만 쿠키를 받게 된다. ~/.xauth/import 파일이 없으면 다른 어떤 사용자로부터도 쿠키를 받아들이게 된다.

사용자에게 ~/.xauth/export 파일이 있으면 그 파일에 나열된 사용자로만 쿠키를 전달하게 된다. ~/.xauth/export 파일이 없으며 호출측 사용자가 root가 아니면 다른 어떤 사용자로도 쿠키를 전달하게 된다. ~/.xauth/export 파일이 없으며 호출측 사용자가 root면 다른 사용자로 쿠키를 전달하지 않는다.

import 파일과 export 파일 모두 (* 같은) 와일드카드를 지원한다. import 파일과 export 파일 모두 비어 있을 수 있으며, 어떤 사용자도 허용하지 않음을 나타낸다.

6.38.2. 옵션

debug

디버그 정보 찍기.

xauthpath=/path/to/xauth

xauth 프로그램의 경로 지정. (기본적으로 /usr/X11R6/bin/xauth, /usr/bin/xauth, /usr/bin/X11/xauth 중 한 경로에 있어야 한다.)

systemuser=UID

"시스템" 사용자에 속한다고 상정할 가장 높은 UID 값 지정. pam_xauth는 root, 그리고 "targetuser" 지정 시 그 사용자까지는 제외하고 UID가 이 값 이하인 사용자에게 크리덴셜 전달을 거부한다.

targetuser=UID

시스템 사용자 검사에서 예외로 하는 대상 UID 지정.

6.38.3. 제공하는 모듈 종류

session 타입만 제공한다.

6.38.4. 반환 값

PAM_BUF_ERR

메모리 버퍼 오류.

PAM_PERM_DENIED

import/export 파일 권한 거부됨.

PAM_SESSION_ERR

사용자 이름 내지 UID를 알아낼 수 없거나 사용자 홈 디렉터리에 접근할 수 없음.

PAM_SUCCESS

성공.

PAM_USER_UNKNOWN

알 수 없는 사용자.

6.38.5. 예시

다음 행을 /etc/pam.d/su에 추가해서 su 호출 시 사용자 간에 xauth 키를 전달할 수 있다.

session  optional  pam_xauth.so
      

6.38.6. 작성자

Michael K. Johnson <johnsonm@redhat.com>의 원래 버전을 바탕으로 Nalin Dahyabhai <nalin@redhat.com>가 pam_xauth를 작성했다.