和听起来足够合理的文档:try_first_pass
use_first_pass
try_first_pass
Before prompting the user for their password, the module
first tries the previous stacked module's password in case
that satisfies this module as well.
use_first_pass
The argument use_first_pass forces the module to use a
previous stacked modules password and will never prompt the
user - if no password is available or the password is not
appropriate, the user will be denied access.
try_first_pass
如果有密码,则使用先前输入的密码,否则提示。use_first_pass
如果有密码,则使用先前输入的密码,否则失败。但也有一个use_authtok
选择:
use_authtok
When password changing enforce the module to set the new
password to the one provided by a previously stacked password
module (this is used in the example of the stacking of the
pam_cracklib module documented below).
是use_authtok
为了什么?是和 一样try_first_pass
,还是一样use_first_pass
,还是完全不同?
多亏了Andrew 的评论、Tomáš Mráz 的解释以及对源代码的检查,以下是我能够弄清楚的:
尽管文档暗示了什么,
try_first_pass
但在应用于pam_unix.so
.use_authtok
use_first_pass
与应用于时完全相同pam_unix.so
:如果先前输入了密码并且该密码符合先前模块的密码质量要求,则使用先前输入的密码。否则,它严格失败。如果既没有
use_first_pass
也没有use_authtok
应用于pam_unix.so
,则行为取决于先前是否输入了密码。如果没有以前输入的密码,pam_unix.so
请亲切地提示输入密码。如果存在,则pam_unix.so
表现得好像use_first_pass
或use_authtok
已设置。这都是为了
pam_unix.so
。请注意try_first_pass
,use_first_pass
和use_authtok
在其他 PAM 模块中的工作方式不同。