在Linux系统管理中,制定并执行一套严格的密码策略是保障系统安全的第一道防线,对于广泛使用的CentOS系统而言,其密码策略的修改主要涉及两个核心层面:一是基础的密码有效期管理,二是更为精细的密码复杂度规则,通过合理配置,可以显著提升系统账户的抗攻击能力。

基础密码策略配置:/etc/login.defs
/etc/login.defs 文件是用于设置用户账户密码有效期等基本策略的配置文件,它主要影响使用 useradd 创建新用户时的默认设置,该文件中的配置项对系统全局生效,是密码管理的基础。
要修改此文件,您可以使用 vi 或 nano 等文本编辑器:
sudo vi /etc/login.defs
在文件中,您可以找到并修改以下关键参数:
| 参数 | 说明 | 推荐值 |
|---|---|---|
PASS_MAX_DAYS | 密码有效的最大天数,超过此天数后必须修改密码 | 90 |
PASS_MIN_DAYS | 密码修改的最小间隔天数,防止用户频繁更改密码 | 1 |
PASS_MIN_LEN | 密码的最小长度(注意:此参数可能被PAM模块覆盖) | 12 |
PASS_WARN_AGE | 密码到期前提前警告的天数 | 7 |
设置密码最长有效期为90天,最小长度为12个字符,并在到期前7天开始警告用户,修改完成后保存退出,此配置对之后创建的新用户生效,对于已存在的用户,可以使用 chage 命令单独更新其密码策略。
高级密码复杂度配置:PAM模块
如果说 login.defs 负责密码的“时效”,那么PAM(可插拔认证模块)则负责密码的“质量”,PAM通过 /etc/pam.d/system-auth(或 /etc/pam.d/password-auth)文件来控制密码的复杂度,如必须包含大小写字母、数字、特殊字符等。
在CentOS 7及更高版本中,主要使用 pam_pwquality.so 模块来定义密码复杂度规则,同样,使用编辑器打开 system-auth 文件:

sudo vi /etc/pam.d/system-auth
找到类似下面这一行(通常在 password 相关的区块):
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= 在这行末尾添加您需要的复杂度参数,常用参数如下表所示:
| 参数 | 说明 | 示例 |
|---|---|---|
minlen | 密码的最小长度 | minlen=12 |
dcredit | 要求密码中至少包含多少个数字,-1表示至少1个 | dcredit=-1 |
ucredit | 要求密码中至少包含多少个大写字母 | ucredit=-1 |
lcredit | 要求密码中至少包含多少个小写字母 | lcredit=-1 |
ocredit | 要求密码中至少包含多少个特殊字符 | ocredit=-1 |
retry | 用户输入密码错误时,允许重试的次数 | retry=3 |
修改后的行可能如下所示:
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 minlen=12 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 authtok_type= 注意:修改PAM配置文件风险较高,一旦配置错误可能导致所有用户无法登录,强烈建议在修改前备份原文件。
策略应用与验证
配置修改完成后,新的密码策略将在用户下一次修改密码时生效,您可以使用 chage 命令查看特定用户的密码策略信息:
sudo chage -l username
该命令会列出用户密码的最后修改日期、过期日期、警告日期等详细信息,帮助您确认策略是否已正确应用,通过结合 login.defs 和 pam_pwquality.so 的配置,您可以构建一套既符合安全规范又易于管理的CentOS密码策略体系。

相关问答 (FAQs)
问题1:我修改了 /etc/login.defs 和 /etc/pam.d/system-auth 文件,为什么现有用户的密码策略没有立即变化?
解答: 这是一个常见的误解,这些配置文件中的策略通常在密码被创建或修改时生效,它们不会对已经存在的、符合旧策略的密码进行追溯性验证,您将最小长度设置为12个字符,但一个用户的旧密码只有8位,该用户仍然可以使用旧密码登录,直到他尝试修改密码时,系统才会强制要求新密码必须满足12位长度的策略,要强制所有用户更新密码,管理员可以使用 chage -d 0 username 命令,这将使用户的密码立即过期,迫使其在下次登录时设置一个符合新策略的新密码。
问题2:如果因为密码策略设置过严(minlen 设置得过高),导致普通用户无法修改密码,甚至root用户也被影响怎么办?
解答: 这是一个高风险操作,但可以通过进入单用户模式或使用救援模式来解决,重启服务器,在GRUB引导菜单出现时,按 e 键编辑启动选项,找到以 linux 或 linux16 开头的那一行,在末尾添加 init=/bin/bash(对于较新系统可能是 rd.break),然后按 Ctrl+X 启动,进入单用户模式后,文件系统会以只读方式挂载,需要重新挂载为读写模式(mount -o remount,rw /),之后,您就可以编辑 /etc/pam.d/system-auth 文件,将过于严格的参数删除或放宽,然后重启系统即可恢复正常,这个过程提醒我们,在修改PAM配置时务必谨慎,并做好备份。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复