如何设置或更改 Linux 用户密码
Linux 和类 UNIX 操作系统使用 passwd 命令来更改用户密码。passwd 用于更新存储在/etc/shadow文件中的用户身份验证令牌(密码哈希)。passwd 更改用户和组帐户的密码。普通 Linux 用户只能更改自己帐户的密码。超级用户(或 root)可以更改系统上任何用户帐户的密码。组管理员可以更改组的密码。passwd 命令还可以更改帐户信息,例如密码到期日期和间隔。
Linux 设置用户密码命令
流程如下:
- 打开 Linux 终端应用程序。
- 键入以下 passwd 命令来更改您自己的密码:
$ passwd
示例输出:Changing password for vivek (current) UNIX password: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
- 如果存在旧密码,则首先提示用户输入旧密码。然后对该密码进行哈希处理(加密),并将其与/etc/shadow中存储的密码进行比较。用户只有一次机会输入正确的密码。
- 超级用户可以跳过此步骤,以便更改忘记的密码。新密码将经过复杂性测试。一般而言,密码应由 10 到 20 个字符组成,包括以下每个集合中的一个或多个字符:
- 小写字母
- 大写字母
- 数字 0 至 9
- 标点符号/空格字符
Linux 更改其他用户账户的密码
- 打开 Linux 终端应用程序。
- 您需要使用 su 命令或 sudo 命令以 root 用户身份登录:
$ su -
## OR ##
$ sudo -i - 然后以 root 用户身份输入 passwd 命令,后跟用户名。例如,要更改名为“vivek”的用户的密码,请运行:
示例会话:
# passwd vivek
## OR ##
$ sudo passwd vivekEnter new UNIX password: Retype new UNIX password: passwd: password updated successfully
- 输入密码时,密码不会显示在屏幕上。例如:
Linux 使用 passwd 修改用户密码
Linux 修改组密码
使用该-g选项时,将更改命名组的密码。在此示例中,更改销售组的密码:
# passwd -g sales
不提示输入当前组密码。该-r选项与用于从命名组中删除当前密码的选项一起使用-g。这允许所有成员访问组。该选项与用于限制所有用户访问命名组的选项-R一起使用。-g
在 Linux 上更改用户密码
作为 Linux 系统管理员 (sysadmin),您可以更改服务器上任何用户的密码。要代表用户更改密码:
- 首先登录或者在Linux上“su”或“sudo”到“root”账户,运行:sudo -i
- 然后输入,passwd tom更改 tom 用户的密码
- 系统将提示您输入两次密码
要更改或设置新的 root(超级用户)密码,请输入:
$ sudo passwd
强制 Linux 用户在下次登录时更改密码
默认情况下,Linux 密码永远不会过期。但是,我们可以强制用户在下次通过 GUI 或 CLI 方法登录时更改密码。语法很简单:
让我们立即使帐户的密码过期:
系统将确认它:
$ sudo passwd -e {username}
$ sudo passwd --expire {username}
$ sudo passwd -e marlena
passwd: password expiry information changed.
当用户尝试通过 ssh 命令登录时,他们将在屏幕上看到以下内容:
$ ssh marlena@192.168.2.25 Last login: Fri Dec 4 04:12:48 2020 from 192.168.2.105 WARNING: Your password has expired. You must change your password now and login again! Changing password for marlena. Current password: New password: Retype new password: passwd: password updated successfully Connection to 192.168.2.25 closed.
锁定和解锁指定账户的用户密码
请注意,以下本地命令不会禁用该帐户。用户可能仍可以使用其他身份验证令牌(例如 SSH 密钥)登录。要禁用该帐户,管理员应使用usermod --expiredate 1 {username}或sudo passwd --expire {username}命令。此外,密码锁定的用户不得更改密码以绕过 sysadmin 设置的安全策略。
我们可以按如下方式锁定密码
$ sudo passwd -l {username}
:
此选项通过将密码更改为与任何可能的加密值都不匹配的值来禁用密码(它在/etc/shadow 文件!中的密码开头添加) 。想要解锁密码,请尝试:
上述命令选项通过将密码更改回其先前的值来重新启用密码。换句话说,更改为使用该选项之前的值。
$ sudo passwd -u {username}
-l
如何在 Linux 中更改密码并查看状态
到目前为止一切顺利。您知道如何使用 passwd 命令在 Linux 上设置或更改用户密码。但是,如何查看 Linux 用户的密码状态?要查看指定帐户的密码状态,请输入 vivek pass,-S如下所示:
$ passwd -S vivek
您将看到以下内容:
vivek P 03/21/2022 0 99999 7 -1
让我们解码这一行。状态信息由以下 7 个字段组成:
- vivek:登录名或账户名。
- P:密码状态,例如 字母P表示用户有可用的密码, 字母L表示用户账户密码被锁定, 字母NP表示无密码。
- 03/21/2022:上次更改密码的日期。
- 0:用户密码的最低使用期限。
- 99999:用户密码的最大使用期限。
- 7:密码的警告期,即在密码过期且帐户被锁定之前给予用户更改密码的天数,如下一个字段所述。
- -1:密码过期后多少天被锁定。
关于设置安全 Linux 密码的说明
密码安全性受损通常由粗心的密码选择造成。避免使用以下常见密码:
- 字典中出现的单词
- 您的名字和姓氏
- 宠物名字
- 孩子或配偶的姓名
- 執照號碼
- 出生日期 (DoB)
- 家庭或办公室地址
我强烈建议您使用所选的密码管理器为所有用户帐户生成一个唯一的密码。
结论
passwd命令行实用程序用于更新或更改用户的密码。加密的密码哈希存储在/etc/shadow文件中,帐户信息存储在/etc/passwd文件中。要查看所有用户帐户,请尝试grep 命令或cat 命令,如下所示:
本快速教程中提供的指导适用于任何 Linux 发行版,包括 Alpine、Arch、Ubuntu、Debian、RHEL、Fedora、Oracle CentOS、SUSE/OpenSUSE 和其他流行的 Linux 发行版。使用 man 命令或 help 命令查看以下手册页
$ cat /etc/passwd
$ grep '^userNameHere' /etc/passwd
$ grep '^tom' /etc/passwd$ man passwd
$ man 5 shadow
$ man 5 passwd
$ passwd --help