需通过chage命令、/etc/login.defs配置、PAM模块及验证四步实现统信UOS密码定期更换:chage设单用户策略,login.defs设新用户默认值,PAM启用登录时强制修改,最后验证shadow字段与登录响应。

如果您需要强制统信UOS用户定期更换密码,以满足等保合规或组织安全策略要求,则需通过系统级工具配置密码生命周期参数。以下是实现该目标的多种技术路径:
一、使用chage命令为单个用户设置密码过期策略
chage命令直接修改/etc/shadow中对应用户的密码老化字段,适用于对特定账户实施差异化策略,操作即时生效且无需重启服务。
1、打开终端,执行sudo chage -l 用户名(例如:sudo chage -l uos)查看当前密码策略状态。
2、执行sudo chage -M 90 用户名,设置密码最长使用天数为90天。
3、执行sudo chage -m 6 用户名,设置密码修改最小间隔天数为6天。
4、执行sudo chage -W 30 用户名,设置密码过期前提前30天发出警告。
5、执行sudo chage -E 2027-12-31 用户名,设置账户在指定日期后失效(可选)。
6、执行sudo chage -d 0 用户名,强制用户下次登录时必须立即修改密码(该操作将重置密码最后一次修改时间为当天)。
二、通过/etc/login.defs配置所有新建用户的默认密码有效期
该方式设定系统创建新用户时自动写入shadow文件的初始老化参数,不影响已有用户,是批量部署的基础性配置。
1、执行命令备份原文件:sudo cp /etc/login.defs /etc/login.defs.bak。
2、使用vim编辑器打开配置文件:sudo vim /etc/login.defs。
3、查找PASS_MAX_DAYS行,将其值修改为90;若该行被注释则取消注释并修改。
4、查找PASS_MIN_DAYS行,将其值修改为6;若不存在则新增一行:PASS_MIN_DAYS 6。
5、查找PASS_WARN_AGE行,将其值修改为30;若不存在则新增一行:PASS_WARN_AGE 30。
6、保存退出后,后续使用useradd创建的新用户将自动继承上述策略。
三、结合PAM模块启用密码修改强制提醒与过期拦截
仅依赖chage或login.defs无法在用户登录时主动拦截已过期账户,需通过PAM配置在认证阶段实时校验并触发强制修改流程。
1、执行命令安装必要依赖:sudo apt-get install -y libpam-pwquality。
2、备份原始PAM配置文件:sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.bak。
3、使用vim编辑器打开PAM密码配置:sudo vim /etc/pam.d/common-password。
4、在文件末尾添加以下行:password [success=ok new_authtok_reqd=ok default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512。
5、在同一文件中查找pam_pwquality.so行,确保其包含enforce_for_root参数以覆盖root账户。
6、保存退出后,用户登录时若密码已过期,系统将自动跳转至密码修改界面而非拒绝访问。
四、验证密码过期策略是否生效
策略配置完成后,必须通过实际测试确认各参数按预期响应,避免因配置遗漏导致安全控制失效。
1、执行命令查看目标用户shadow字段:sudo grep 用户名 /etc/shadow,检查第5字段(最大天数)、第4字段(最小间隔)、第6字段(警告天数)是否匹配设置值。
2、执行命令模拟密码过期状态:sudo chage -d $(date -d "yesterday" +%Y-%m-%d) 用户名。
3、切换至该用户登录终端,观察是否出现You are required to change your password immediately提示。
4、输入旧密码后,系统应强制进入新密码设置流程,且新密码须符合当前复杂度策略。
5、完成修改后,再次执行chage -l验证Last password change字段已更新为当日日期。

















