我在网上找到的所有内容都提到注释掉 cracklib...但它并不存在于我的系统身份验证文件中。
我想禁用 CentOS 在用户更改密码时进行的字典检查。
这是我的系统身份验证文件:
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_fprintd.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 1000 quiet
account required pam_permit.so
password requisite pam_pwquality.so try_first_pass local_users_only retr$
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_a$
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet$
session required pam_unix.so
答案1
强烈警告您首先不要尝试禁用此功能:
字典检查是由 cracklib 通过 pam_pwquality 处理,您应该已经在/etc/pam.d/system-auth
文件中看到它了。
pam_pwquality 当前版本的手册页建议禁用字典检查的选项:
dictcheck=N
If nonzero, check whether the password (with possible
modifications) matches a word in a dictionary. Currently the
dictionary check is performed using the cracklib library. The
default is 1 which means that this check is enabled.
手册页还指出您可以将其添加到/etc/security/pwquality.conf
或作为选项/etc/pam.d/system-auth
(可能会被系统工具覆盖,因此您应尽可能避免更改它)。
不幸的是,Red Hat 在 EL 7 中提供的 pam_pwquality 版本不支持该dictcheck
选项。因此,您唯一真正的解决方案是根本不使用 pam_pwquality。请注意,注释掉它也会禁用所有其他检查其执行的操作,例如最小密码长度和字符复杂性。
答案2
我发现最好的解决方案是创建一个新的空cracklib
字典。该dictcheck = 0
选项似乎在 CentOS 7 上不起作用。
默认cracklib
词典位于 下/usr/share/cracklib/
。创建一个新的空单词文件并从中构建词典:
touch /usr/share/words
create-cracklib-dict /usr/share/words
/usr/share/cracklib/pw_dict.*
警告:这将覆盖您的默认词典,因此如果您想恢复,请务必备份文件 。