NAME

PAM, pam - 리눅스용 장착형 인증 모듈

DESCRIPTION

이 매뉴얼은 Linux-PAM을 간단히 소개하기 위한 것이다. 더 많은 정보를 원하는 독자는 Linux-PAM 시스템 관리자 안내서를 보면 된다.

Linux-PAM은 시스템에 있는 응용(서비스)의 인증 작업들을 다루는 라이브러리 체계다. 라이브러리에서 제공하는 안정적인 범용 인터페이스(응용 프로그래밍 인터페이스, API)를 (login(1)이나 su(1) 같은) 특권 부여 프로그램에서 이용해 표준 인증 작업들을 수행한다.

PAM 방식의 주된 특징은 인증의 성격을 동적으로 설정 가능하다는 점이다. 달리 말해 각 서비스 제공 응용에서 사용자를 인증하는 방식을 시스템 관리자가 마음대로 선택할 수 있다. 이러한 동적 설정은 Linux-PAM 설정 파일 /etc/pam.conf의 내용에 의해 정해진다. 또는 /etc/pam.d/ 디렉터리에 위치한 개별 설정 파일들로 설정할 수도 있다. 이 디렉터리가 있으면 Linux-PAM에서 /etc/pam.conf를 무시하게 된다.

머신 설정 디렉터리 /etc/pam.d/ 외에 시스템 디렉터리 /usr/lib/pam.d/에 벤더 제공 PAM 설정 파일들이 설치돼 있을 수도 있다. 머신 설정 파일이 없으면 벤더 제공 파일을 쓴다. /etc/pam.d/에 있는 파일이 /usr/lib/pam.d/에 있는 같은 이름의 파일보다 우선한다.

이 매뉴얼을 읽게 될 시스템 관리자 입장에서 Linux-PAM 라이브러리의 내부 동작을 이해하는 건 그리 중요치 않다. 꼭 알아야 할 건 응용(서비스)과 실제 인증 작업을 수행하는 장착형 인증 모듈(PAM)들 사이 연결을 설정 파일이 규정한다는 점이다.

Linux-PAM에선 인증 작업들을 네 가지 독립적 관리 그룹들로 나누는데, 계정(account) 관리, 인증(auth) 관리, 패스워드(password) 관리, 세션(session) 관리가 그것이다. (설정 파일에서 쓰는 키워드를 강조해서 표시했다.)

간단히 말해 이 그룹들은 접근이 제한된 서비스에 대한 일반적 사용자 요청의 여러 측면들을 다룬다.

account - 계정 검사 유형 서비스 제공. 사용자 패스워드가 만료되었는가? 이 사용자가 요청한 서비스에 접근하는 게 허용돼 있는가?

auth - 사용자를 인증하고 사용자 크리덴셜을 확정한다. 보통 어떤 시도-응답 요청을 통해 이뤄지며, 사용자가 그 요청을 만족시켜야 한다. 스스로 주장하는 그 사용자라면 패스워드를 입력하라는 식이다. 모든 인증이 이 방식은 아니고 (스마트 카드나 생체 측정 장치 사용 같은) 하드웨어 기반 인증도 있으며, 적절한 모듈을 쓰면 더 일반적인 인증 방식을 매끄럽게 대체할 수 있다. 이게 바로 Linux-PAM의 유연함이다.

password - 이 그룹은 인증 메커니즘 갱신 작업을 맡는다. 보통 그 서비스는 auth 그룹의 서비스와 밀접하게 연관돼 있다. 어떤 인증 메커니즘은 이 기능으로 갱신하는 게 잘 맞는다. 표준 유닉스 패스워드 기반 접근 방식이 좋은 예인데, 새 패스워드를 입력받으면 된다.

session - 이 작업 그룹은 서비스를 제공하기 전과 중단한 후에 해야 할 일들을 담당한다. 감사 기록 관리나 사용자 홈 디렉터리 마운트 등이 여기 포함된다. 모듈에서 사용자 이용 서비스에 영향을 주기 위한 여는 훅과 닫는 훅을 함께 제공한다는 점에서 session 관리 그룹이 중요하다.

FILES

/etc/pam.conf
설정 파일
/etc/pam.d
Linux-PAM 설정 디렉터리. 일반적으로 이 디렉터리가 있으면 /etc/pam.conf 파일을 무시한다.
/usr/lib/pam.d
Linux-PAM 벤더 설정 디렉터리. /etc/pam.d의 파일이 이 디렉터리에 있는 같은 이름의 파일보다 우선한다.

ERRORS

Linux-PAM 라이브러리 체계에서 발생한 오류들은 보통 syslog(3)로 기록된다.

CONFORMING TO

DCE-RFC 86.0, 1995년 10월. 추가 기능들이 있되, 이 RFC와 하위 호환 유지.

SEE ALSO

pam(3), pam_authenticate(3), pam_sm_setcred(3), pam_strerror(3), PAM(7)


2018-05-18