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