
一、命令简介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--minimumDAYS设置密码最短有效期。在更改密码后必须经过 DAYS 天才能再次更改。-x DAYS--maximumDAYS设置密码最长有效期。密码在设置 DAYS 天后将过期必须更改。-w DAYS--warningDAYS设置在密码过期前多少天开始向用户显示警告信息。-i DAYS--inactiveDAYS设置密码过期后账户在 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.示例 2root 用户为其他用户设置密码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 下次登录时系统会强制要求其设置一个新密码。五、注意事项权限与安全只有 root 用户能管理所有用户的密码。普通用户只能更改自己的密码且必须提供正确的当前密码。使用 --stdin 或在命令行中明文传递密码存在安全风险密码可能出现在历史记录或进程列表中在自动化脚本中应谨慎评估或考虑使用 chpasswd 命令。删除密码 (-d) 会允许无密码登录这在生产环境中是极高的安全风险应避免使用。密码策略通过 -n, -x, -w, -i 等选项设置的密码老化策略修改的是 /etc/shadow 文件中的对应字段。请确保策略符合系统的安全要求。兼容性某些选项如 --stdin并非在所有 Linux 发行版或 Unix 变种中都可用。编写跨平台脚本时建议使用 chpasswd 命令进行密码的非交互式设置。