我正在使用 Fedora 19。默认情况下,pam 设置为禁用不良密码,例如“password”。这很好。尝试更改此默认设置令人恼火。这是一个用于测试内部东西的盒子,没有连接到互联网,也没有连接任何机器。糟糕的密码会促进测试过程。或者,你到底如何改变密码要求?
系統授權
man pam_cracklib
有一些设置不同密码要求的很好的例子。所以我打开了/etc/pam.d/system-auth
,你会看到如下几行:
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
password requisite pam_pwquality.so try_first_pass retry=3 authtok_type=
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password required pam_deny.so
*headdesk*. 根据我的经验,这样的警告意味着每次运行包管理器和/或随机运行时,您的更改都会被清除。
验证配置
那么...authconfig
是下一步。我查找所有名为“authconfig”的文件。/etc/sysconfig/authconfig
看起来很有希望。而且,顶部没有关于一时兴起而破坏我的编辑的警告。我找到此行USEPWQUALITY=yes
并更改它。现在我运行:
# authconfig --test
<snip>
pam_pwquality is enabled (try_first_pass retry=3 authtok_type=)
<snip>
什么鬼?让我们man authconfig
仔细看看。哦!看起来那个文件不是读通过 authconfig,它是已更改。那么……您如何配置 authconfig?手册建议system-config-authentication
,我安装了它,但没有提供任何类似于复选框来禁用 pam_pwquality 的东西。手册中的下一个建议是命令行选项。太棒了!我喜欢命令行工具。只是,没有一个记录的命令行选项可以禁用 pam_pwquality。
密码质量配置文件
感谢 Aaron 的回答,我了解到几年前 Fedora 决定/etc/security/pwquality.conf
这配置密码质量要求的地方。遗憾的是,正如文件和中所述man 5 pwquality.conf
,(1) 没有办法禁用字典检查,并且 (2) 无法将允许的密码长度设置为低于 6。
答案1
/usr/sbin/authconfig
粗略地看一下和中的源代码后/usr/share/authconfig/authinfo.py
:
- 手册页不完整,脚本接受的选项的完整列表位于
authconfig --help
- 所有内容都可以在命令行上覆盖(甚至
/etc/security/pwquality.conf
密码最小长度等设置),除了pwquality 本身。恕我直言,这是一个漏洞并应予以报告。 从
authinfo.py
第 2489 行和第 2156 行开始:def read(self): self.readSysconfig() ... self.readPAM(ref) ...
首先
readSysconfig
读取;然后您在那里输入的内容将被中的内容/etc/sysconfig/authconfig
覆盖(尤其是 和):readPAM
/etc/pam.d/*
password_auth*
system_auth*
if module.startswith("pam_cracklib") or module.startswith("pam_pwquality"): self.setParam("enablePWQuality", True, ref)
总结:对于未被覆盖(或无法覆盖)的选项,设置取自当前配置包括标记为自动生成的文件。为了使其工作,编辑/etc/sysconfig/authconfig
和删除显示的行grep -E pwq\|crack /etc/pam.d/*
编辑:还有第二个错误,这使得上述建议仍然不起作用:第 2248 行:
# Special handling for pam_pwquality and pam_passwdqc: there can be
# only one.
if self.enablePWQuality and self.enablePasswdQC:
self.setParam("enablePasswdQC", False, ref)
if not self.enablePWQuality and not self.enablePasswdQC:
self.setParam("enablePWQuality", True, ref)
您必须选择两种质量控制实施方法之一,否则将为您选择一种!结合第一个错误,这使得禁用它变得不可能。
答案2
您可以手动控制system-auth
文件。创建一个新文件(您可以通过复制来开始system-auth-ac
),然后更改system-auth
符号链接以指向新文件。
这使得您有责任更新 PAM 配置的这一部分,因为 authconfig 将不再触及符号链接或它指向的文件。但是,authconfig 仍将更新该system-auth-ac
文件,因此您可以继续将其用作参考(如果需要)。如果聪明的话,您甚至可以将其添加include
到本地副本中,但如何做到这一点超出了这个问题的范围。
您还应该检查其他符号链接,例如password-auth
。您可能需要对它们进行相同的处理。
从authconfig(8)
手册页中Files
:
/etc/pam.d/system-auth
Common PAM configuration for system services which include it using
the include directive. It is created as symlink and not relinked if
it points to another file.
/etc/pam.d/system-auth-ac
Contains the actual PAM configuration for system services and is the
default target of the /etc/pam.d/system-auth symlink. If a local
configuration of PAM is created (and symlinked from system-auth
file) this file can be included there.
因此,如果system-auth
是文件,则 authconfig 会将其更改为链接到system-auth-ac
。但如果system-auth
是符号链接,则 authconfig 会保留它。
答案3
它看起来可以通过以下方式配置/etc/security/pwquality.conf
来源:https://fedoraproject.org/wiki/Features/PasswordQualityChecking
答案4
我刚刚根据相关搜索找到了这个问题,我想我可以给你一个答案。
Fedora 创建指向 authconfig 生成的文件的符号链接。即 system-auth
指向 的链接system-auth-ac
。如果您创建system-auth
自己的文件,那么理论上将来所做的任何更改auth-config
仍将更新system-auth-ac
,但您修改的文件保持不变。
它实际上非常优雅,但我只是在好奇这些*-ac
文件的作用时才发现它。