PAM pluggable authentication modules
由sun提出的一种认证机制。
通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。
一、PAM的结构
系统管理员通过PAM配置文件来制定认证策略,即制定什么服务该采用什么样的认证方法;应用程序开发者通过在服务程序中使用PAM API而实现对认证方法的调用;而PAM服务模块(service module)的开发者利用PAM API(service module API)来编写认证模块(主要是引出一些函数pam_sm_xxxx()供libpam调用),将不同的认证机制(比如传统的Unix认证方法、Kerberos等)加入到系统中;PAM核心库(libpam)则读取配置文件,以此为根据将服务程序和相应的认证方法联系起来。
二、PAM支持的四种管理界面:
1、认证管理(authentication management)
主要是接受用户名和密码,进而对该用户的密码进行认证,并负责设置用的一些秘密信息。
2、账户管理(account management)
主要是检查账户是否被允许登录系统,账户是否已经过期,账户的登录是否有时间段的限制等等。
3、密码管理(password management)
主要是用来修改用户的密码。
4、会话管理(session management)
主要是提供对会话的管理和记账(accounting)。
三、PAM的文件:
/etc/pam.conf或者/etc/pam.d/PAM配置文件
/usr/lib/security/pam_*.so可动态加载的PAM service module
对于Redhat,其目录不是/usr/lib,而是/lib。
四、PAM的配置:
PAM的配置是通过单个配置文件/etc/pam.conf。Redhat还支持另外一种配置方式,即通过配置目录/etc/pam.d/,且这种的优先级要高于单个配置文件的方式。
1、使用配置文件/etc/pam.conf
2、使用配置目录/etc/pam.d/(只适用于Redhat Linux)