069 passwd命令
命令说明
passwd 用于设置和修改用户密码,root 可改任何人密码、普通用户只能改自己的;同时提供锁定、过期策略查询等账号密码生命周期管理功能。
语法
passwd [选项]... [用户名]
常用参数
| 参数 | 说明 |
|---|---|
| (无参数) | 交互式修改当前用户密码 |
| 用户名 | root 为指定用户改密:passwd zhangsan |
| -l | 锁定账号密码(root) |
| -u | 解锁账号(root) |
| -d | 清空密码(root,账号变免密,危险) |
| -e | 强制下次登录立即改密码 |
| -S | 查看账号密码状态:PS 可用 / LK 锁定 / NP 无密码 |
| -n / -x / -w | 设置最小使用天数 / 最大有效天数 / 提前警告天数 |
| --stdin | 从标准输入读密码,脚本批量设密用 |
使用示例
$ passwd
修改自己的密码(旧密码+新密码两遍)
$ passwd zhangsan
root 直接为用户重置密码(无需旧密码)
$ passwd -S root
查看 root 密码状态
$ passwd -l guest
临时锁定 guest 账号
$ passwd -e zhangsan
让用户下次登录必须换密码(交付初始账号后常用)
$ echo "newpass" | passwd --stdin zhangsan
RHEL 系脚本非交互设密
$ echo "zhangsan:pass" | chpasswd
跨发行版批量设密(配合文件 chpasswd < users.txt)
$ passwd -x 90 -w 7 zhangsan
密码 90 天过期、提前 7 天警告
$ chage -l zhangsan
查看密码过期策略详情
实用技巧
- 普通用户改密要验旧密码,root 改任何人密码都不需要旧密码——这是 passwd 权限模型的核心。
- passwd -l 与 usermod -L 效果类似(shadow 前加 !),但 passwd -u 解锁后若密码本身是空可能直接免密,操作前 passwd -S 确认状态。
- 批量建号标准姿势:useradd 用户 && echo "用户:密码" | chpasswd,避免交互式卡住脚本。
- 密码复杂度由 PAM 控制(pam_pwquality),报 BAD PASSWORD 是策略拦截,不是命令出错;调试期可临时放宽 /etc/security/pwquality.conf。
- 密码过期管理看 /etc/login.defs 默认值与 chage 命令;chage -d 0 用户 可强制立即过期改密。
- 生产环境谨慎 passwd -d:空密码 + PermitEmptyPasswords 组合等于后门,sshd 默认禁止空密码登录。