☰
Linux 用户密码管理核心!passwd 命令超详细教程|锁定 / 解锁 / 策略全覆盖
2026/10/13 11:45:06 网站建设 项目流程

一、命令简介

passwd 命令用于更新用户的身份验证令牌(密码)。普通用户可以使用它来更改自己的登录密码,而系统管理员(root 用户)可以使用它来管理系统中任何用户的密码,包括设置、锁定、解锁、删除密码以及查看密码状态信息。

该命令通过修改 /etc/shadow 文件来生效。密码更改操作通常需要交互式确认,但管理员也可以通过特定选项进行非交互式操作。

二、语法格式

passwd [选项] [用户名]

说明:

  • 普通用户执行 passwd 时,不能指定 [用户名] 参数,只能更改自己的密码。
  • 只有 root 用户(或拥有 sudo 权限的管理员)可以指定 [用户名] 参数,以管理其他用户的密码。
  • 选项可以组合使用,以实现特定的管理功能。

三、常用选项及说明

表格

选项长选项说明
-d--delete删除指定用户的密码。执行后,该用户将无需密码即可登录(空密码)。仅 root 用户可用。
-l--lock锁定指定用户的密码。通过在 /etc/shadow 的密码字段前添加!或!!实现,被锁定的用户将无法使用密码登录系统。仅 root 用户可用。
-u--unlock解锁指定用户的密码。移除由 -l 选项添加的锁定标记。如果用户密码原本为空,可能需要结合 -f 选项强制解锁。仅 root 用户可用。
-S--status显示指定用户的密码状态摘要。输出包括:用户名、密码状态(PS = 已设置,LK = 锁定,NP = 无密码)、最后更改日期、最小期限、最大期限、警告期、不活动期等。仅 root 用户可用。
-e--expire立即使指定用户的密码过期。这将在用户下次登录时强制要求更改密码。仅 root 用户可用。
-n DAYS--minimum=DAYS设置密码最短有效期。在更改密码后,必须经过 DAYS 天才能再次更改。
-x DAYS--maximum=DAYS设置密码最长有效期。密码在设置 DAYS 天后将过期,必须更改。
-w DAYS--warning=DAYS设置在密码过期前多少天开始向用户显示警告信息。
-i DAYS--inactive=DAYS设置密码过期后,账户在 DAYS 天内仍可登录(宽限期),超过此期限账户将被禁用。
-k--keep-tokens仅更新已过期的密码。
-f--force强制执行操作。通常与 -u 解锁空密码账户时一起使用。
--stdin从标准输入读取新密码,而不是通过终端交互式提示。这在脚本中自动化设置密码时非常有用。注意:此选项可能在某些发行版中不可用,更通用的做法是使用 chpasswd 命令。

四、示例用法

示例 1:普通用户更改自己的密码

用户 alice 登录后,输入以下命令并按提示操作:

plaintext

$ passwd Changing password for user alice. (current) UNIX password: # 输入当前密码 New password: # 输入新密码 Retype new password: # 再次输入新密码进行确认 passwd: all authentication tokens updated successfully.

示例 2:root 用户为其他用户设置密码

plaintext

# passwd bob New password: Retype new password: passwd: all authentication tokens updated successfully.

示例 3:使用 --stdin 非交互式设置密码(适用于脚本)

plaintext

# echo "MySecurePass123" | passwd --stdin bob Changing password for user bob. passwd: all authentication tokens updated successfully.

更安全 / 通用的脚本方法(推荐):

plaintext

# echo "bob:MySecurePass123" | chpasswd

示例 4:锁定与解锁用户账户

plaintext

# 锁定用户 bob 的密码,禁止其登录 # passwd -l bob Locking password for user bob. passwd: Success # 查看 bob 的密码状态(显示 LK) # passwd -S bob bob LK 2024-01-01 0 99999 7 -1 (Password locked.) # 解锁用户 bob 的密码 # passwd -u bob Unlocking password for user bob. passwd: Success

示例 5:删除用户密码(使其可无密码登录)

plaintext

# passwd -d bob Removing password for user bob. passwd: Success # 再次查看状态(显示 NP) # passwd -S bob bob NP 2024-01-01 0 99999 7 -1 (Empty password.)

示例 6:设置密码策略(有效期、警告期等)

plaintext

# 设置用户 bob 的密码策略:最短5天后才能改,最长90天后过期,过期前7天开始警告。 # passwd -n 5 -x 90 -w 7 bob Adjusting aging data for user bob. passwd: Success # 查看应用后的详细状态 # passwd -S bob bob PS 2024-10-27 5 90 7 -1 (Password set, SHA512 crypt.)

示例 7:强制用户下次登录时更改密码

plaintext

# passwd -e bob Expiring password for user bob. passwd: Success

用户 bob 下次登录时,系统会强制要求其设置一个新密码。

五、注意事项

  1. 权限与安全

    • 只有 root 用户能管理所有用户的密码。普通用户只能更改自己的密码,且必须提供正确的当前密码。
    • 使用 --stdin 或在命令行中明文传递密码存在安全风险(密码可能出现在历史记录或进程列表中),在自动化脚本中应谨慎评估,或考虑使用 chpasswd 命令。
    • 删除密码 (-d) 会允许无密码登录,这在生产环境中是极高的安全风险,应避免使用。
  2. 密码策略通过 -n, -x, -w, -i 等选项设置的密码老化策略,修改的是 /etc/shadow 文件中的对应字段。请确保策略符合系统的安全要求。

  3. 兼容性某些选项(如 --stdin)并非在所有 Linux 发行版或 Unix 变种中都可用。编写跨平台脚本时,建议使用 chpasswd 命令进行密码的非交互式设置。


需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询