当使用此控制标志时,当验证失败时仍然会继续进行其下的验证过程,它会返回一个错误信息,但是,由于它不会由于验证失败而停止继续验证过程,因此用户不会知道是哪个规则项验证失败。
2、 requisite
此控制标志与required的验证方式大体相似,但是,只要某个规则项验证失败则立即结束整个验证过程,并返回一个错误信息。使用此关键字可以防止一些通过暴力猜解密码的攻击,但是,由于它会返回信息给用户,因此,它也有可能将系统的用户结构信息透露给攻击者。
3、 sufficient
只要有此控制标志的一个规则项验证成功,那么PAM构架将会立即终止其后所有的验证,并且不论其前面的required标志的项没有成功验证,它依然将被忽略,然后验证通过。
4、 optional
表明对验证的成功或失败都是可有可无的,所有的都会被忽略。(通常用于session类型)
复杂的控制标志能够让管理员可以指定在验证过程中发生某种事件时可以执行的动作。这些控制标志用方括号包括起来,并由一系列的value=action 所构成,每个值之间用空格分开。
在新版PAM中,可供你选择的value列表存在于/usr/include/security/_pam_types.h文件中。其中的内容包括:success,open_err,symbol_err,ervice_err,system_err,buf_err,perm_denied,auth_err,cred_insufficient,authinfo_unavail,user_unknown,maxtries,new_authtok_reqd,acct_expired,session_err,cred_unavail,cred_expired,cred_err,no_module_data,conv_err,authtok_err,authtok_recover_err,authtok_lock_busy,authtok_disable_aging,try_again,ignore,abort,authtok_expired,module_unknown,bad_item,conv_again,incomplete,和default。
action 可以是一个无符号的整数,当在某行验证规则的控制标志的value指定期一个无符号的整数时n,就表明由此行往下的n行验证模块将被直接跳过。
Action还可以是下列所示的值:
ignore:设定此值后,指定的事件将会被忽略。
bad :设定此值后,当发生指定的事时的返回值将被认为是验证模块失败。如果此验证模块是整个验证堆叠中的第一个失败的模块, 它的状态值将作为整个堆叠的状态。
die:它的作用与bad 相同,但是,当设定此值的此类事件发生时,会终止整个验证模块的后续验证工作,立即返回到应用程序。
ok :设定此值可以用来覆盖此行验证规则前面已经返回了PAM_SUCCESS的所有值,但是如果前面有验证规则返回了一个错误的值,那么就不会被它覆盖。
done:它的作用与ok 相同,但是,当设定此值的此类事件发生时,会终止整个验证模块的后续验证工作,立即返回到应用程序。
reset :设定此值的作用是用来清除内存中原先的验证模块状态,并重新开始下一组的验证。
第三列是Module-path,用来为要验证的服务提供需要使用的验证模块。在Fedora Core 6系统中,当要引用的模块处于/lib/security/或/lib64/security/目录时,可以只输入模块的完整名称;如果要引用的模块不存在这两个默认的保存目录,就必需在模块的完整名称前加上完整的模块路径名。例如/usr/lib/security/。
第四列是Module-arguments,用来为引用的模块指定特殊的选项,多个选项之间可以通过空格隔开,还可在选项中使用“[ ]”来输入嵌套的命令或字串,当选项超过一行时用“\”符号连接下一行。
3、PAM中常用的验证模块说明
要掌握PAM的使用,我们还应当去了解一些常用的PAM验证模块的作用,毕竟PAM的具体验证功能都是由这些可插入的验证模块来完成的。在RedHat企业Linux3系统中,默认的PAM验证文件存在于/lib/security/或/lib64/security/目录,它们都是以“.so”为后缀的文件。
每个PAM验证模块的使用对象,总是与PAM的验证类型相对应的。有些验证模块只针对某一种验证方法,例如pam_access.so验证模块只与account验证类型配套使用,而有些验证模块却可以与所有的验证类型一起使用,例如pam_unix.so验证模块。你在了解这些验证模块时,应当同时了解它们的所属于验证类别。
下面是一些常用的验证模块的简要说明:
(1)、pam_access验证模块
pam_access验证模块一般与account验证类型一同使用。它主要用于对访问进入管理,提供基于登录名、主机名或域名、公网IP地址或网络号,以及非网络登录时的tty名称的访问控制。pam_access验证模块主要是根据/etc/security/access.conf配置文件中的内容,来进行相应的验证工作的。如果access.conf文件不在缺省的/etc/security/目录,你可以在其后使用accessfile参数指定自定义配置文件的绝对路径。
/etc/security/access.conf配置文件中的每一行都由如下三个字段构成,中间用冒号隔开:
permission:users/groups:origins
permission(权限)字段可以用“+”,即允许访问,“-”禁止访问来表示相应的权限。