pam 概述(整理中)
官方主页: http://www.linux-pam.org/
PAM (Pluggable Authentication Modules )是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。PAM最初是集成在Solaris中,目前已移植到其它系统中,如Linux、SunOS、HP-UX 9.0等。
PAM的安装文件:
- /usr/lib/libpam.so.* PAM核心库
- /etc/pam.conf ,/etc/pam.d/* PAM配置文件
- /usr/lib/security/pam_*.so 可动态加载的PAM service module
PAM配置管理
配置文件的语法
配置文件的语法如下所示:
- 该文件是由规则列表中,每个规则通常是放在同一行,但可能会延长线的转义结束: "<LF>"
- pam 规则对大小写敏感
- 注释前面加上'#'标记,并延伸到线下一个结尾。
/etc/pam.conf文件的语法
<pre> service type control module-path module-arguments </pre>
从Linux-PAM 5.6版开始引入了一种基于目录的配置方式,通过/etc/pam.d/目录下的文件对PAM进行配置。目录下的所有配置文件都以某个服务名命名(小写)。 两种配置方式不能同时起作用,也就是说,你只能使用其中一种对Linux-PAM进行配置,一般/etc/pam.d/优先。
/etc/pam.d/目录下的配置文件的语法和/etc/pam.conf文件的语法相似,形式如下:
<pre> module-type control-flag module-path arguments </pre>
这种配置方式与单一配置文件相比,具有很大的优越性:
- 减少了配置错误的几率。
- 更易于维护。
- 可以通过使用不同配置文件的符号连接决定系统的验证策略。
- 可以加快对于配置文件的解析。
- 可以对单个的Linux-PAM配置文件设置不同的存取权限。
更易于软件包的管理。
配置实例
配置选项
type
PAM支持的四种管理类型:
- auth 认证管理: 接受用户名和密码,进而对该用户的密码进行认证,并负责设置用户的一些秘密信息。
- account 帐户管理: 检查帐户是否被允许登录系统,帐号是否已经过期,帐号的登录是否有时间段的限制等等。
- password 密码管理: 主要是用来修改用户的密码。
- session 会话管理: 主要是提供对会话的管理和记账(accounting)。
control
- required 表示本模块必须返回成功才能通过认证,但是如果该模块返回失败的话,失败 结果也不会立即通知用户,而是要等到同一stack 中的所有模块全部执行完毕再将失败结果 返回给应用程序。可以认为是一个必要条件。
- requisite 与required类似,该模块必须返回成功才能通过认证,但是一旦该模块返回 失败,将不再执行同一stack内的任何模块,而是直 接将控制权返回给应用程序。是一个必 要条件。注:这种只有RedHat支持,Solaris不支持。
- sufficient 表明本模块返回成功已经足以通过身份认证的要求,不必再执行同一stack 内的其它模块,但是如果本模块返回失败的话可以 忽略。可以认为是一个充分条件。
- optional 表明本模块是可选的,它的成功与否一般不会对身份认证起关键作用,其返回 值一般被忽略。