PAM (Pluggable Authentication Modules)
- 시스템과 프로그램의 사용자 인증에 대한 동적 모듈을 제공
/etc/pam.d
$ cat sudo
# 형식 컨트롤 모듈 경로 [인수]
# 형식
# auth: 사용자 인증 (암호를 물어보거나..)
# account: 사용자 관리 (패스워드 만료여부, 시스템 접근 가능 여부 등)
# password: 암호 관리 (암호 설정, 변경 등)
# session: 인증 전후의 동작 관련 (로그인 기록 로깅 등)
#
# 컨트롤 (인증 성공여부에 따라 어떤 액션을 할지)
# requisite: 모듈 실행에 실패하면 바로 인증 거부하도록 함
# required: 모듈 실행에 실패하더라도 바로 인증 거부하지않고 동일 유형 모듈 실행을 완료한 시점에 인증 거부 (어느단계에서 실패했는지 알수 없으므로 requisite 보다 안정성이 높음)
# sufficient: 이전 모듈이 실패해도 이 모듈에서 인증에 성공하면 PAM은 인증을 승인 (실패하면 계속 진행)
# optional
#%PAM-1.0
auth include system-auth
account include system-auth
password include system-auth
session optional pam_keyinit.so revoke
session required pam_limits.so
/etc/pam.d/system-auth
$ cat /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth required pam_faildelay.so delay=2000000
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet_success
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account required pam_permit.so
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so