PAM(Pluggable Authentication Module)
PAM(Pluggable Authentication Module) 프레임워크는 플러그 가능 모듈을 사용하여 기존 시스템으로 여러 인증 메커니즘을 통합할 수 있는 기능을 시스템 관리자에게 제공합니다.
PAM을 사용할 수 있는 애플리케이션은 기존 애플리케이션을 수정하지 않고 새로운 기술에 플러그인할 수 있습니다. 이러한 유연성은 시스템 관리자가 다음을 수행할 수 있도록 합니다.
- 애플리케이션에 대한 시스템의 인증 서비스 선택
- 해당 서비스에 여러 인증 메커니즘 사용
- 기존 애플리케이션을 수정하지 않고 새로운 인증 서비스 모듈 추가
- 여러 모듈이 있는 인증에 이전에 입력한 비밀번호 사용
PAM 프레임워크는 라이브러리, 플러그 가능 모듈 및 구성 파일로 구성됩니다. PAM 라이브러러리는 PAM API(Application Programming Interface)를 구현하고 PAM 트랜잭션 관리 및 플러그 가능 모듈에 정의되어 있는 PAM SPI(Service Programming Interface) 호출 기능을 수행합니다. 플러그 가능 모듈은 호출 서비스 및 구성 파일의 해당 항목에 따라 라이브러리에 의해 동적으로 로드됩니다. 성공은 플러그 가능 모듈 뿐만 아니라 서비스에 정의된 동작에 의해 판별됩니다. 스태킹 개념을 통해 여러 인증 메소드로 인증하도록 서비스를 구성할 수 있습니다. 지원되는 경우, 추가 입력을 프롬프트하지 않고 이전에 제출된 비밀번호를 사용하도록 모듈을 구성할 수도 있습니다.
- login
- passwd
- su
- ftp
- telnet
- rlogin
- rexec
- rsh
- snappd
- imapd
- dtaction
- dtlogin
- dtsession
다음 그림은 PAM을 사용하도록 구성된 시스템에서 PAM 사용 애플리케이션, PAM 라이브러리, 구성 파일 및 PAM 모듈 간의 상호작용을 보여 줍니다. PAM 사용 애플리케이션은 PAM 라이브러리에서 PAM API를 호출합니다. 라이브러리는 구성 파일의 애플리케이션 항목에 따라 로드할 적절한 모듈을 판별하고 모듈에서 PAM SPI를 호출합니다. PAM 모듈과 애플리케이션 간의 통신은 애플리케이션에서 구현된 대화 기능을 통해 발생합니다. 그런 다음 모듈의 성공 또는 실패 및 구성 파일에 정의된 동작이 다른 모듈의 로드 필요 여부를 판별합니다. 다른 모듈을 로드해야 하는 경우 프로세스가 계속되고 그렇지 않은 경우 결과가 다시 애플리케이션으로 전달됩니다.