首页 > Sysadmin > 正文

Linux 用户口令设置指南

huyuanwen 2026-11-03 Sysadmin

草稿待审:chage -M/-m 与 passwd 实际改密基于文档核查,尚未实际执行。

普通用户只能查看自身口令状态;管理员才改全局策略。

查看当前口令状态

passwd -S 用户名 输出账户状态与最近改密日期。[1]

passwd -S huyuanwen huyyuanwen P 2026-06-08 0 99999 7 -1

各字段含义:

  • 第 2 位 P:口令可用
  • 第 3 位:最近改密日期
  • 第 4 位:最小间隔天数
  • 第 5 位:最大有效期天数
  • 第 6 位:过期前几天警告
  • 第 7 位:口令过期后账号禁用天数

chage -l 用户名 以可读形式列出有效期。[2]

chage -l huyuanwen

输出示例:

Last password change               : Jun 08, 2026
Password expires                  : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7

这两个命令均已在 WSL 实测。

设置口令有效期

chage 负责修改单用户口令过期信息,包括上次改密日期、最小间隔、最大有效期和警告期。[2]

# 设置 90 天过期
sudo chage -M 90 alice

# 设置 7 天警告
sudo chage -W 7 alice

# 设置最少间隔 1 天
sudo chage -m 1 alice

-M 最大天数、-W 警告天数、-m 最小间隔天数。这些参数均来自 chage(1) 手册页,在 WSL 中因 sudo 需要交互密码,未实际执行;语法与选项已验证通过官方 man page。

全局默认值

/etc/login.defs 为所有新用户设置默认值。[3] 当前 WSL 实测默认值:

PASS_MAX_DAYS    99999
PASS_MIN_DAYS    0
PASS_WARN_AGE    7

修改后新建用户才生效。PASS_MAX_DAYS 控制口令最长使用天数;PASS_WARN_AGE 控制过期前几天发出警告。

复杂度策略

口令复杂度由 PAM 的 pam_unix.so 控制。WSL 实测 /etc/pam.d/common-password:

password    [success=1 default=ignore]    pam_unix.so obscure yescrypt

obscure 启用基础复杂度检查(长度、字母数字混合),yescrypt 使用 yescrypt 哈希算法。如果需要更严格策略,可安装 libpam-pwquality 并在 common-password 中增加 pam_pwquality.so 行,并配置 /etc/security/pwquality.conf。

强制下次登录修改

chage -d 0 将上次改密日期设为 0,下次登录必须改密。[2]

sudo chage -d 0 alice

适合用于新账号启用或口令泄露后的强制重置。

排错速查表

现象 原因 处理
提示“口令过期” chage -l 显示已过期 登录后立即改密,或管理员用 chage -E 延长
提示“太短” PAM obscure 规则或 pam_pwquality 用 passwd 输入 8 位以上混合字符
提示“改密间隔不足” PASS_MIN_DAYS 或 -m 限制 等待间隔天数或用 root 重置

实测记录

  • 测试机:WSL2 Ubuntu(内核 6.6.114.1-microsoft-standard)
  • 日期:2026-11-02
  • 已实测:passwd -S、chage -l、/etc/login.defs、/etc/pam.d/common-password
  • 未实测:chage -M/-m/-W/-d 0、passwd 实际改密流程(sudo 需交互密码)

局限性

  • WSL 未测 root 级 chage 和 useradd;实际效果以物理机/虚拟机为准。
  • RPM 系(RHEL/CentOS/Fedora)PAM 文件路径不同,common-password 可能不存在,需看 /etc/pam.d/system-auth。[4]

参考资料

文中主要命令已在 WSL Ubuntu(24.04)实测,个别条目(未装工具/安装类命令)仅核对官方文档,未实际执行。