PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。 PAM模块是一种嵌入式模块,修改后即时生效。
pam的重要文件如下:
/usr/lib/libpam.so.* ## PAM核心库
/etc/pam.conf ## PAM配置文件
/etc/pam.d/* ## PAM各个模块的配置文件
/lib/security/pam_*.so ## 可动态加载的PAM模块
PAM配置文件的每一行的格式:Module-type Control-flag Module-path Arguments
模块类型 控制字符 模块路径 模块参数
Module-type:
auth:确定有关用户认证的两方面。第一,他确认用户就是他们自己,这通过应用程序提示用户输入密码 或者其他正式身份的办法。第二,这类模块会赋予成员资格。
account:处理非认证级的账号管理。典型的用法是基于一天的不同时间来限制、允许访问某服务。限制 当前可用的系统资源(最大用户数)或者限制特定用户—root只能从控制台登陆。
session:一系列有关动作,只在用户得到/失去服务时要做的事。这包括记录用户的登录/退出、挂载必要 的目录等。
password:设置密码。
Control-flag:
required:表示本模块必须返回成功才能通过认证,但是如果该模块返回失败的话,失败结果也不会立即 通知用户,而是要等到同一stack中的所有模块全部执行完毕再将失败结果返回给应用程序。可以认为是一个必 要条件。
requisite:与required类似,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行 同一stack内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件。注:Solaris不支持。
sufficient:表明本模块返回成功已经足以通过身份认证的要求,不必再执行同一stack内的其它模块,但是 如果本模块返回失败的话可以忽略。可以认为是一个充分条件。
optional:表明本模块是可选的,它的成功与否一般不会对身份认证起关键作用,其返回值一般被忽略。
include,从字面就知道什么意思了。包含另外一个配置文件。
Module-path:
Debian的PAM module存放目录默认是在/lib/security。在各个模块的配置文件里,不用写绝对路径,直接 写这个默认目录下面的模块名就可以了。当然,也可以写绝对路径。
Arguments:
各个模块的参数都不一样,具体的要开发者的man手册。无效参数不会对结果有影响,但是会被日志记录 下来。首先,看看/lib/security有没有这个模块,再:man 模块名