Pam 认证

 

1.PAM工作流程

Pam 认证_第1张图片

2.PAM 配置文件语法

module-type  control-flag module_path  optional

在/etc/pam.d/下的文件中,与服务名称相对应的文件,为该服务的pam验证文件,例如服务为sshd,则在/etc/pam.d下存在 sshd这个文件,里面包含sshd验证规则。其中有个一特殊的文件为other,如果有的服务与之没有向对应的文件,则对应other。

module-type

服务类型,即 auth、account、session 或 password。

验证模块(auth)用于验证用户或设置/销毁凭证。

帐户管理模块(account)将执行与访问、帐户及凭证有效期、密码限制/规则等有关的操作。

会话管理模块(session)用于初始化和终止会话。

密码管理模块(passwd)将执行与密码更改/更新有关的操作。

control-flag

用于指明在确定服务的集成成败值过程中模块所起的作用。有效的控制标志包括 include、optional、required、requisite 和 sufficient。

required 表示本模块必须返回成功才能通过认证,但是如果该模块返回失败的话,失败结果也不会立即通知用户,而是要等到同一stack 中的所有模块全部执行完毕再将失败结果返回给应用程序。可以认为是一个必要条件。

requisite 与required类似,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行同一stack内的任何模块,而是直 接将控制权返回给应用程序。是一个必要条件。

sufficient 表明本模块返回成功已经足以通过身份认证的要求,不必再执行同一stack内的其它模块,但是如果本模块返回失败的话可以 忽略。可以认为是一个充分条件。

optional表明本模块是可选的,它的成功与否一般不会对身份认证起关键作用,其返回值一般被忽略。

控制值 模块执行结果 动作 最终结果
requisite 成功 继续检查下一个
Stop
取决于其他模块
失败          失败
required 成功 继续检查下一个 取决于其他模块
失败 继续检查下一个 失败
sufficient 成功 Stop 成功
失败 继续检查下一个 取决于其他模块
optional 成功 继续检查下一个 取决于其他模块
失败
include 无关 执行包含文件中的验证 取决于其他模块

module-path

用于实现服务的库对象的路径,一般都只写库名,库的路径一般为/lib/security(32位),/lib64/security(64位)

module-options

传递给服务模块的选项,可选。

几个公用的参数:

debug 该模块应当用syslog( )将调试信息写入到系统日志文件中。

no_warn 表明该模块不应把警告信息发送给应用程序。

use_first_pass 表明该模块不能提示用户输入密码,而应使用前一个模块从用户那里得到的密码。

try_first_pass 表明该模块首先应当使用前一个模块从用户那里得到的密码,如果该密码验证不通过,再提示用户输入新的密码。

use_mapped_pass 该模块不能提示用户输入密码,而是使用映射过的密码。

expose_account 允许该模块显示用户的帐号名等信息,一般只能在安全的环境下使用,因为泄漏用户名会对安全造成一定程度的威胁。

 

你可能感兴趣的:(Linux)