Linux-PAM(Linux용 Pluggable Authentication Modules)은 응용에서 사용자를 인증하는 방식을 로컬 시스템 관리자가 선택할 수 있게 해 주는 공유 라이브러리 세트다.
달리 말하면 PAM을 쓰는 응용을 (재작성 및) 재컴파일하지 않고도 사용하는 인증 메커니즘을 전환하는 게 가능하다. 실제로 응용 자체는 전혀 건드리지 않고 로컬 인증 시스템 전체를 업그레이드 할 수도 있다.
과거에 사용자 인증을 필요로 하는 응용들은 특정 인증 메커니즘을
사용하도록 컴파일 해야 했다. 예를 들어 전통적인 UN*X 시스템의 경우
사용자가 올바른 패스워드를 입력하는 것으로 사용자의 신원을
검증한다. 그 패스워드 앞에 "솔트"라는 2개 문자를 붙인 다음
(crypt(3)으로) 암호화한다. 그렇게 암호화한 패스워드가 시스템
패스워드 데이터베이스(/etc/passwd
파일)의 사용자 항목의 두 번째 필드와 동일하면 사용자가 인증된다.
그런 시스템에선 그 한 가지 인증 체계에 기반해서 거의 모든 형태의
권한 부여가 이뤄진다. 사용자 식별자(UID)와 다양한 그룹 소속
여부에 따라 권한이 정해진다. 그리고 사용자의 개인 및 그룹 신원에
기반해서 서비스와 응용을 이용할 수 있다. 전통적으로 그룹 소속은
/etc/group
파일의 항목으로 정해졌다.
권한 부여 소프트웨어의 개발을 안전하고 적절한 인증 체계의 개발과
분리하는 게 Linux-PAM의
목적이다. 이를 위해 응용에서 사용자 인증을 요청하는 데 이용할 수
있는 함수들의 라이브러리를 제공한다. 시스템 파일
/etc/pam.conf
를 (또는
/etc/pam.d/
안에 위치한 일련의 설정
파일들을) 사용해 제각기 사용 가능한 인증 모듈들을 통해 사용자
요청을 인증하도록 PAM 라이브러리를 제각각 구성한다. 모듈들은 보통
/lib/security
내지
/lib64/security
디렉터리에 있으며
동적 적재 오브젝트 파일(dlopen(3))
참고) 형태로 돼 있다.