6.12. pam_keyinit - keyinit 파일 표시

pam_keyinit.so [ debug ] [ force ] [ revoke ]

6.12.1. 설명

pam_keyinit은 호출 프로세스가 사용자 기본 세션 키링과 다른 세션 키링을 가지도록 하는 PAM 모듈이다.

프로세스의 세션 키링이 user-session-keyring(7)인지 확인해서 그러면 새로 만든 session-keyring(7)으로 교체한다. 세션 키링을 새로 만드는 경우 user-keyring(7)에 대한 링크를 그 세션 키링에 설치한다. 그래서 그 링크를 통해 사용자 공용인 키들에 자동으로 접근할 수 있게 된다. 이후로는 따로 오버라이드하지 않는 한 호출 프로세스의 그 세션 키링을 모든 자식들이 물려받게 된다.

다른 PAM 모듈들에서 키링에 토큰을 붙일 수 있도록 이 모듈에서 auth(pam_setcred(3)만) 및 session 부문을 제공한다. 모듈을 호출하면 그 안에서 세션 키링이 생성된다. 그리고 이 모듈을 PAM 설정에서 가급적 앞쪽에 넣는 게 좋다.

이 모듈은 기본적으로 로그인 프로세스에서 쓰기 위한 것이다. 세션 키링을 교체한 후에는 이전 세션 키링과 그 안의 키들에 더는 접근할 수 없게 된다는 점에 유의하자.

일반적으로 su 같은 프로그램에선 이 모듈을 호출하지 않는 게 좋다. 설정된 키들이 다른 문맥으로 스며들게 하는 게 일반적으로 바람직하기 때문이다. 키들에는 이를 관리하기 위한 자체 권한 체계가 있다.

keyutils 패키지를 이용해 키들을 직접 조작할 수 있다. 다음에서 받을 수 있다.

Keyutils

6.12.2. 옵션

debug

syslog(3)로 디버그 정보 로그 남기기.

force

호출 프로세스의 세션 키링이 무조건 교체되게 한다.

revoke

호출 프로세스를 위해 세션 키링을 생성한 경우 호출 프로세스가 종료할 때 그 프로세스의 세션 키링이 폐기되게 한다.

6.12.3. 제공하는 모듈 종류

session 모듈 타입만 제공한다.

6.12.4. 반환 값

PAM_SUCCESS

일반적으로 이 값을 반환하게 된다.

PAM_AUTH_ERR

인증 실패.

PAM_BUF_ERR

메모리 버퍼 오류.

PAM_IGNORE

PAM 처리부에서 반환 값을 무시해야 함.

PAM_SERVICE_ERR

사용자 이름을 알아낼 수 없음.

PAM_SESSION_ERR

인자가 유효하지 않거나 ENOMEM 같은 시스템 오류 발생 시 이 값을 반환하게 된다.

PAM_USER_UNKNOWN

알 수 없는 사용자.

6.12.5. 예시

login 항목에 다음 행을 추가해서 각 로그인 세션을 각자의 세션 키링으로 시작할 수 있다.

session  required  pam_keyinit.so
      

이렇게 하면 한 세션의 키가 같은 사용자의 다른 세션으로 누출되는 걸 막게 된다.

6.12.6. 작성자

David Howells, <dhowells@redhat.com>가 pam_keyinit을 작성했다.