银河麒麟OS强制用户每90天修改密码需三步:①用sudo chage -M 90 -W 7 -I 30 username为单个用户设置;②用脚本批量配置UID≥1000的普通用户;③修改/etc/login.defs中PASS_MAX_DAYS 90使新用户默认继承。

银河麒麟OS怎么设置强制定期修改密码
您正在管理一台银河麒麟OS服务器或办公终端,需要强制所有普通用户每90天更换一次登录密码,以满足等保2.0三级或行业审计要求。该策略将写入系统级PAM认证链与shadow数据库,对已存在用户立即生效,新用户自动继承。
通过chage命令为单个用户启用密码有效期
这是最直接、最可控的方式,适用于管理员逐个配置关键账户(如audit、secadmin、dbuser)的密码策略。
第一步:打开终端,执行命令查看目标用户当前策略:
sudo chage -l username(将username替换为实际用户名,例如 sudo chage -l secops)
第二步:确认输出中“Maximum number of days between password change”为-1或空值——说明当前无强制过期限制,可安全覆盖。
第三步:执行强制定期修改策略:
sudo chage -M 90 -W 7 -I 30 username
【-M 90 表示密码最长使用90天,超期后无法登录;-W 7 表示提前7天开始每日登录时提示“Your password will expire in X days”;-I 30 表示过期后宽限期30天,宽限期内仍可登录但必须改密,超期则账户锁定】
第四步:再次运行 sudo chage -l username 验证输出是否已更新为“Password expires : [具体日期]”,且“Minimum number of days between password change”默认为0(允许随时改密)。
批量为UID≥1000的普通用户统一启用90天策略
当需对全部办公账户(非系统账号)实施统一合规策略时,避免手动逐条执行,用脚本自动识别并配置。
方法一:基于UID范围一键部署
执行以下命令,自动筛选所有普通用户(UID ≥ 1000)并设置90天有效期、7天预警、30天宽限期:
getent passwd | awk -F: '$3 >= 1000 {print $1}' | xargs -I {} sudo chage -M 90 -W 7 -I 30 {}
方法二:从文件列表精准控制
新建纯文本文件 users-to-enforce.txt,每行一个用户名(如:finance01、hr02、it-support),确保无空行、无中文、无制表符;再执行:
sudo awk '{print "chage -M 90 -W 7 -I 30 " $1}' users-to-enforce.txt | sh
注意:【若某用户不存在,该行会报错但不影响其余用户;执行前建议先用 cat users-to-enforce.txt | xargs -n1 id 验证用户名有效性】
修改/etc/login.defs使新用户默认继承90天策略
仅配置现有用户不够——后续用 useradd 创建的新账户仍会沿用旧策略,必须同步更新系统默认参数。
1. 执行 sudo nano /etc/login.defs 打开全局配置文件。
2. 查找 PASS_MAX_DAYS 行,原内容通常为 99999 或 -1;将其改为:
PASS_MAX_DAYS 90
3. 同时检查并修改以下两行(若不存在则新增):
PASS_WARN_AGE 7
PASS_MIN_DAYS 0
4. 保存退出(Ctrl+O → Enter → Ctrl+X)。
【此操作仅影响未来新建用户,对已存在用户完全无效;必须配合chage命令单独设置】
验证策略是否真实生效
完成上述任一配置后,必须用真实用户登录测试,否则策略形同虚设。
① 切换至目标用户(如 su - secops),输入当前密码进入shell;
② 执行 date 命令记录当前时间;
③ 立即执行 sudo chage -d $(date -d "yesterday" +%Y-%m-%d) secops(将密码最后修改日期设为昨天);
④ 退出并重新登录该账户——应立即看到提示:“You are required to change your password immediately (password expired).”
⑤ 输入 passwd 修改密码,成功后下次登录即恢复常规流程。

















