避免密码更改时出现“身份验证令牌操作错误”

避免密码更改时出现“身份验证令牌操作错误”

我正在实施一项安全策略,该策略将强制用户在更改自己的密码时引入更严格的密码:

配置/etc/pam.d/passwd文件是:

#%PAM-1.0
auth     include    common-auth
account  include    common-account
password include    common-password
session  include    common-session

因此,我对此文件进行了更改/etc/pam.d/common-password

默认common-password文件包含以下两行:

password    requisite   pam_pwcheck.so  nullok cracklib
password    required    pam_unix2.so    use_authtok nullok

我需要向 pam_pwcheck (没问题)和另一个 PAM 模块 (pam_cracklib) 添加几个选项,以使密码更强。接下来,这是我的最终/etc/pam.d/common-password文件,包括passwd

password  requisite  pam_cracklib.so minclass=3 retry=3
password  requisite  pam_pwcheck.so  nullok cracklib minlen=10 remember=5
password  required   pam_unix2.so    use_authtok nullok

当我配置了两个 PAM 模块时,就会出现问题:如果我输入正确的密码,它就可以正常工作。如果我引入一个必须拒绝的错误密码pam_cracklib(例如,仅包含小写字母的密码),它可以正常工作(毫无问题地拒绝密码)。

但是,当我输入有效cracklib但无效的密码pwcheck(包含大写字母、小写字母和 7 个字符长度的数字的密码)时,它会拒绝该密码,但会显示此错误:

Bad password: too short    
passwd: Authentication token manipulation error

因此,pam_pwcheck打印其错误消息 ( Bad password: too short),但 PAM 链发生了一些错误。

你知道我的配置有什么问题吗?

PS“安全”要求根本不是我的,所以请避免对此发表评论;-)。

答案1

尝试重构您的 PAM 链,如下所示的文件/etc/pam.d/common-password

password required pam_pwcheck.so
password required pam_cracklib.so use_authtok minlen=10 retry=3 minclass=3
password required pam_pwcheck.so remember=5 use_authtok use_first_pass
password required pam_unix2.so nullok use_authtok use_first_pass

我找到了上面的内容,并从标题为以下的 Novell 文档中对其进行了稍微修改:同时使用 pam_pwcheck 和 pam_cracklib

另外我使用这些作为资源:

答案2

我终于让它工作了,只需颠倒前两个模块的顺序:

password  requisite  pam_pwcheck.so  nullok cracklib minlen=10 remember=5
password  requisite  pam_cracklib.so minclass=3 retry=3
password  required   pam_unix2.so    use_authtok nullok

现在,我面临另一个错误,但我会在另一个问题中提出。

答案3

对我来说,我使用的是 Fedora 25systemd-nspawn容器,在我重新passwd安装sudo dnf reinstall passwd.

相关内容