11245

56 分钟

#Bash 的 passwd 命令

passwd [OPTION] [USER]

功能

修改用户密码。

类型

可执行文件(/usr/bin/passwd),属于 passwd

参数

  • OPTION 选项:
    • -a, --all - 和 -S 选项一起使用,显示所有用户的状态
    • -d, --delete - 删除用户的密码,使其无法通过密码登录
    • -e, --expire - 将用户的密码设为过期,下次用户尝试登录时会强制其修改密码
    • -h, --help - 显示帮助信息
    • -i, --inactive INACTIVE - 用户密码过期 INACTIVE 天后禁用该账户
    • -k, --keep-tokens - 保留未过期的令牌
    • -l, --lock - 锁定用户的密码,使其无法通过密码登录,也无法修改密码
    • -n, --mindays MIN_DAYS - 用户修改密码至少间隔 MIN_DAYS 天;设为 0 时可以随时修改密码
    • -q, --quiet - 安静模式
    • -r, --repository REPOSITORY - 在特定的存储库中修改密码
    • -R, --root CHROOT_DIR - 将根目录设为 CHROOT_DIR 目录,并使用其中的配置文件(/etc/passwd, /etc/shadow 等);CHROOT_DIR 必须是绝对路径
    • -P, --prefix PREFIX_DIR - 使用 PREFIX_DIR 目录前缀下的配置文件(${PREFIX_DIR}/etc/passwd, ${PREFIX_DIR}/etc/shadow 等)
    • -S, --status - 显示用户密码的 状态 信息
    • -u, --unlock - 解锁 --lock 选项锁定用户的密码
    • -w, --warndays WARN_DAYS - 设置密码过期前提醒用户的天数
    • -x, --maxdays MAX_DAYS - 设置密码有效期的最长天数;超过 MAX_DAYS 天后,必须更改密码
    • -s, --stdin - 此选项用于指示 passwd 应该从标准输入(可以是管道)读取新密码
  • USER - 要操作的用户,默认为当前用户

返回值

  • 0 - 成功
  • 1 - 没有权限
  • 2 - 无效的选项组合
  • 3 - 意外的故障,无计可施
  • 4 - 意外的故障,/etc/passwd, /etc/shadow 等文件不存在
  • 5 - /etc/passwd, /etc/shadow 等文件被占用
  • 6 - 选项的参数无效

#状态说明

  • 字段 1 (用户名):当前显示信息的账户名称
  • 字段 2 (密码状态):账号锁定状态标识;常见值有 PPS(正常可用)、LLK(被锁定)、NP(无密码)
  • 字段 3 (最后修改时间):密码最近一次被修改的日期;多数系统显示为自 1970 年 1 月 1 日以来的天数,部分发行版也可能直接显示具体日期
  • 字段 4 (最小修改间隔):密码至少需要保留多少天后才能被再次更改;通常 0 表示随时可改
  • 字段 5 (最大有效期):密码在多少天后必须进行更改;99999 之类的较大数值通常表示永不过期
  • 字段 6 (警告提前期):在密码过期前多少天开始发出警告提醒用户修改
  • 字段 7 (非活跃期):密码过期后多少天,若用户仍未登录修改,账号将被彻底禁用;通常 -1 表示永不禁用

#示例

查看状态

$ passwd -S
primers P 2026-07-13 0 99999 7 -1
  • 字段 1 (用户名)primers
  • 字段 2 (密码状态)P(正常可用)
  • 字段 3 (最后修改时间):密码最近一次被修改的日期为 2026-07-13
  • 字段 4 (最小修改间隔)0 表示随时可改。
  • 字段 5 (最大有效期)99999 之类的较大数值通常表示永不过期。
  • 字段 6 (警告提前期):密码过期前 7 天提醒用户
  • 字段 7 (非活跃期)-1 表示永不禁用

修改密码

$ passwd                                # 修改当前用户的密码
Changing password for primers.
Current password:                       # 此处输入当前密码
New password:                           # 此处输入新密码
Retype new password:                    # 此处再次输入新密码
passwd: password updated successfully

自动化修改密码

#!/usr/bin/bash
echo ba4e765cc3c7647c | sudo passwd --stdin primers
  • --stdin 选项使得修改密码时可以不进行交互;只有 root 用户可以使用此选项

#推荐阅读

#手册

更新: 2026/7/21

作者: planc

创建: 2026/7/21