银河麒麟系统需强制用户每90天更新密码,管理员须修改/etc/login.defs中pass_max_days为90、pass_min_days为7、pass_warn_age为7,并用chage命令批量更新现有用户shadow记录。

银河麒麟系统需要让员工每90天必须更新一次登录密码,防止长期使用同一密码带来的安全风险,这项策略必须由管理员在系统级统一配置,不能依赖用户自觉操作。
启用全局密码过期策略
该策略直接作用于所有本地用户账户,修改后新规则将在下次密码变更时生效,不追溯已存在的旧密码。
1. 打开终端,执行:sudo nano /etc/login.defs
2. 查找PASS_MAX_DAYS这一行,将其值改为90(如原为99999,则替换为PASS_MAX_DAYS 90);此参数控制密码最长有效天数,设为0表示永不过期,设为-1则禁用该机制。
3. 同时检查并修改以下两行:PASS_MIN_DAYS设为7(强制新密码至少使用7天后才可再次修改),PASS_WARN_AGE设为7(登录前7天开始提醒用户密码即将过期)。
4. 按Ctrl+O保存,回车确认文件名,再按Ctrl+X退出编辑器。
批量应用策略到现有用户
仅修改/etc/login.defs只影响未来新建的用户,要让当前所有账户立即遵守新规则,必须逐个更新其shadow记录。
方法一:对单个用户执行强制过期
运行命令:sudo chage -M 90 -W 7 -m 7 用户名(将“用户名”替换为实际账户名,如kylin)
方法二:一键更新全部普通用户(跳过系统账户)
执行命令:sudo awk -F: '$3 >= 1000 && $3
这行命令会自动筛选出UID在1000~59999之间的常规用户,并为每人设置90天有效期、7天预警、7天最小使用期——漏掉任何一个账户都可能导致策略失效。
验证策略是否生效
选一个测试账户(如kylin),运行:sudo chage -l kylin
查看输出中“Maximum number of days between password change”是否为90,“Number of days of warning before password expires”是否为7,“Minimum number of days between password change”是否为7。
若显示“Password expires”字段为具体日期(如Oct 28, 2026),说明策略已写入;若仍显示“never”,表示未成功应用,需返回上一步重新执行chage命令。
触发用户首次登录强制改密
对新入职员工或需立即启用策略的账户,可直接令其密码即刻过期,下次登录时系统自动拦截并要求重设。
执行:sudo chage -d 0 用户名
该操作会将/etc/shadow中对应用户的密码最后修改日期设为1970年1月1日,Linux内核识别该时间戳即触发强制改密流程。注意:此操作不可逆,用户无法跳过该步骤直接进入桌面。











