我正在学习PAM,对于控制标志的某种组合的含义我一无所知。从Red Hat文档中,我们可以得到:
这种PAM的必要失败最终将导致PAM-API返回失败,但是仅在调用了其余的堆叠模块(针对该服务和类型)之后必需
等所需,然而,在这样的模块返回失败的情况下,控制被直接返回到应用程序。
这种模块的足够成功足以满足模块堆栈的认证要求(如果先前的必需模块失败,则忽略该模块的成功)。此模块的故障不认为是满足该类型成功的应用程序的致命危险。如果模块成功,则PAM框架会立即将成功返回给应用程序,而无需尝试任何其他模块。
因此,据我所知,如果一个模块requisite
发生故障,则不会解析整个模块堆栈,并且控件将立即返回给应用程序。如果模块sufficient
成功,则不会解析其余的模块堆栈,并且控件将立即返回到应用程序。如果模块required
发生故障,则将解析整个堆栈。
现在,我无法理解某个模块required
失败而另一个模块sufficient
成功时的行为。
required
项目失败,为什么PAM
需要继续遍历整个堆栈?反正最终会失败吗?