菜鸟科技网

password命令怎么用?

passwd 命令是什么?

passwd 命令用于修改用户账户的密码,普通用户只能修改自己的密码,而超级用户(root)可以修改任何用户的密码,包括设置一个空密码(不推荐)。

password命令怎么用?-图1
(图片来源网络,侵删)

基本语法

passwd [选项] [用户名]
  • [选项]:可选的参数,用于改变命令的行为。
  • [用户名]:可选参数,如果省略,passwd 会默认修改当前登录用户的密码,只有 root 用户可以指定其他用户名来修改其密码。

常用选项

选项 描述 示例
-l Lock (锁定) 指定用户的账户,使其无法登录。 sudo passwd -l username
-u Unlock (解锁) 指定用户的账户。 sudo passwd -u username
-d Delete (删除) 指定用户的密码,使其可以无密码登录(安全风险高)。 sudo passwd -d username
-e Expire (过期) 指定用户的密码,强制用户在下次登录时必须修改密码。 sudo passwd -e username
-S Status (状态) 显示指定用户的密码状态(如密码是否被设置、是否过期等)。 sudo passwd -S username
-i Inactive (非活动) 设置密码过期后,账户被锁定前经过的天数,需要 -w 选项配合使用。 sudo passwd -i 7 username
-w Warning (警告) 设置密码过期前多少天开始向用户发出警告。 sudo passwd -w 7 username
--stdin 从标准输入读取密码,而不是从终端交互式输入,这对于脚本自动化非常有用。 echo "newpassword" | sudo passwd --stdin username

使用场景与示例

场景1:修改自己的密码(最常用)

普通用户执行此命令,系统会提示输入当前密码(验证身份),然后要求输入两次新密码(防止输错)。

$ passwd
Changing password for user myuser.
(current) UNIX password:  # 输入你当前的密码
New password:             # 输入你的新密码
Retype new password:      # 再次输入你的新密码
passwd: all authentication tokens updated successfully.

场景2:root 用户修改其他用户的密码

这是系统管理员最常见的操作之一。root 用户可以直接为任何用户设置新密码,无需知道该用户当前的密码。

# 假设当前用户是 root
$ sudo passwd alice
New password:             # 输入 alice 的新密码
Retype new password:      # 再次输入新密码
passwd: password updated successfully.

场景3:临时锁定一个用户账户

如果你需要暂时禁止某个用户登录,可以使用 -l 选项。

$ sudo passwd -l bob
passwd: password expiry information changed for bob.

被锁定后,用户 bob 即使输入正确密码也无法登录,你可以通过 cat /etc/shadow 文件看到该用户密码字段前有一个 标记。

password命令怎么用?-图2
(图片来源网络,侵删)

场景4:解锁一个被锁定的用户账户

使用 -u 选项可以解除锁定。

$ sudo passwd -u bob
passwd: password expiry information changed for bob.

场景5:强制用户在下次登录时修改密码

这对于新入职的员工或临时账户非常有用,确保他们使用自己设置的密码。

$ sudo passwd -e newuser
passwd: password expiry information changed for newuser.

下次 newuser 登录时,系统会强制他/她修改密码。

场景6:查看用户密码状态

使用 -S 选项可以快速查看一个账户的密码状态,包括密码是否被设置(P)、是否被锁定(L)等。

password命令怎么用?-图3
(图片来源网络,侵删)
$ sudo passwd -S alice
alice PS 2025-10-27 0 99999 7 -1 (Password set, SHA512 crypt.)

输出字段解释(以 alice PS 2025-10-27 0 99999 7 -1 为例):

  • alice: 用户名
  • PS: 密码状态
    • PS: Password Set (密码已设置)
    • LK: Locked (账户被锁定)
    • NP: No Password (无密码)
  • 2025-10-27: 上次修改密码的日期。
  • 0: 密码过期的最小天数(0表示随时可改)。
  • 99999: 密码过期的最大天数(99999表示永不过期)。
  • 7: 密码过期前的警告天数。
  • -1: 密码过期后,账户被锁定前的非活动天数(-1表示永不锁定)。

场景7:在脚本中自动化设置密码

--stdin 选项允许你通过管道将密码传递给 passwd 命令,非常适合在自动化脚本中使用。

注意: 这种方法会将密码明文显示在命令历史和进程中,存在安全风险,请确保脚本文件权限严格控制,并在使用后清除历史记录。

# echo "newpass" | sudo passwd --stdin username

重要注意事项

  1. 密码强度:现代 Linux 发行版通常使用 pam_cracklib 等模块来强制执行密码策略(如最小长度、包含数字、大小写字母等),如果设置的密码太简单,可能会被拒绝。
  2. 安全性
    • 不要与他人共享密码。
    • 使用强密码(长度足够、包含大小写字母、数字和特殊符号)。
    • 不要在脚本中硬编码密码,如果必须自动化,考虑使用 SSH 密钥对进行无密码登录,这是更安全的方式。
  3. root 的责任:作为 root 用户,你可以重置任何人的密码,包括 root 自己,请谨慎操作,避免意外锁定自己或他人。
  4. 密码存储位置:用户的加密后的密码存储在 /etc/shadow 文件中,普通用户没有读取权限,只有 root 可以查看,这个文件比 /etc/passwd 更安全,因为它专门存储了敏感的密码信息。

passwd 命令是 Linux 系统管理的基石,无论是日常使用还是系统管理,你都需要频繁地与它打交道,掌握它的基本用法和常用选项对于任何一个 Linux 用户或管理员来说都是必不可少的技能。

分享:
扫描分享到社交APP
上一篇
下一篇