要正确地配置PAM, 理解策略怎样被解释是很重要的。
当一个应用程序调用 pam_start(3), PAM库为指定的服务导入策略和构成4个模块链(每个为一个功能)。如果一个或多个这些链是空的,则来自其它 服务里策略所对应的相应的链将来替换。
当应用程序稍后调用六个PAM要素之一时, PAM库在此链中检索相应的功能并调用列在此链中的每个模块里的适当的服务功能,顺序是按照他们在配置里的顺序,每次调用完一个服务函数, 模块打印服务函数返回的错误信息以便确定下一步发生什么事情。有一些例外,我们讨论以下的应用表:
表 17.1. PAM链执行概述
如果在一个链的最后 fail 为true, 或碰到一个“break” , 调度会返回首个失败的模块返回的错误代码,否则, 它返回 PAM_SUCCESS.
说明里的第一个例外是错误代码 PAM_NEW_AUTHTOK_REQD 被视为一个success, 除非没有模块失败, 并且至少一个模块返回了 PAM_NEW_AUTHTOK_REQD, 调度将返回 PAM_NEW_AUTHTOK_REQD.
第二个例外是 pam_setcred(3) 将 binding 和 sufficient 模块视为如同它们是 required.
第三个也是最后一个例外是 pam_chauthtok(3) 两次运行整个链 (一次是初步检查,另一个是实际设置密码), 在初步检查阶段它视 binding 和 sufficient 模块如同它们是 required.
《NetBSD指南-17.5.3.策略》
版主: lionux
在线用户
正浏览此版面之用户: Semrush [Bot] 和 0 访客