人人都会AI编程

passwd 用户密码管理

更新时间:2026-07-12

在 Linux 系统中,用户密码的管理几乎全部围绕 passwd 命令展开。它不仅能让你修改自己的密码,还能让管理员(root)对其他账户进行密码设置、锁定、过期等操作。所有修改最终都会反映在 /etc/shadow 这个加密存储的密码文件中,而不是直接写入 /etc/passwd,从而保证了密码的安全性。

1. 修改自己的密码
普通用户只需在终端中输入 passwd,系统会依次提示输入旧密码、新密码并确认。出于安全考虑,输入过程中屏幕不会显示任何字符(包括星号),这是正常现象:

$ passwd
(current) UNIX password:    # 输入当前密码,无回显
Enter new UNIX password:    # 输入新密码
Retype new UNIX password:   # 再次输入新密码
passwd: password updated successfully

2. root 用户管理其他用户密码
管理员(root 或通过 sudo 提权)可以修改任何用户的密码,此时不需要知道旧密码:

sudo passwd username

系统会直接提示输入新密码并确认。这个功能在用户忘记密码时非常有用,但同时也意味着管理员必须被充分信任。

3. 快速锁定与解锁账户
有时需要临时禁用某个用户的登录权限,而不删除其数据,可以用 -l(lock)锁定账户,用 -u(unlock)解锁:

sudo passwd -l username   # 锁定:在密码前添加 '!',使用该账户无法通过密码登录
sudo passwd -u username   # 解锁:移除添加的 '!',恢复原始密码

需要注意的是,锁定只阻止密码登录,用户仍可能通过 SSH 密钥等其他方式登录,因此更彻底的禁用需要结合 usermod --expiredate 或设置 shell 为 /usr/sbin/nologin 等措施。

4. 密码过期与强制更新
管理员可以强制用户在下次登录时修改密码,常用于新创建账户或怀疑密码泄露后:

sudo passwd -e username   # 立即将密码标记为过期,用户下次登录时会被要求更改密码

也可以查看账户的密码过期信息:

sudo passwd -S username

输出示例:username P 09/12/2024 0 99999 7 -1,分别表示账户名、状态(P=正常、L=锁定、NP=无密码)、最后修改日期、最小使用天数、最大使用天数、警告天数、不活动天数。这些参数同样可以通过 chage 命令进行更细致的策略调整。

5. 删除密码(设置为无密码)
使用 -d 选项可以删除用户的密码,使该账户在登录时不再要求密码(安全风险很大,通常仅用于特定系统账户或测试环境):

sudo passwd -d username

实际注意事项

  • 密码复杂度由 PAM(可插拔认证模块)控制。passwd 会遵循系统的规则(如最小长度、包含字母数字符号等),如果新密码不符合策略,会直接提示并拒绝修改。
  • 修改密码后,如果系统使用了 pam_tally2faillock 等模块来记录失败尝试,锁定状态不会因为密码变更而自动重置。
  • /etc/shadow 的任何手动编辑都应避免,始终使用 passwdchage 等标准化工具,以免因格式错误导致用户无法登录。

passwd 是每个 Linux 用户和管理员最早接触和最常使用的用户管理命令之一,掌握它的基本选项能够高效处理绝大多数与密码相关的任务。