最糟糕的密码不是弱密码,而是根本没有密码。 和系统一样 admin,您必须确保每个用户帐户都有一个强密码。 这个简短的教程解释了如何在 Linux 中查找密码为空的用户帐户。
在进入主题之前,让我们快速回顾一下 阴影 文件及其用途。
什么是影子密码文件?
在 RHEL 系统中,用户密码经过哈希处理并存储在名为 /etc/shadow
. 影子密码文件包含用户帐户的用户身份验证和密码老化详细信息。
影子密码文件归 root
用户并且只能由超级用户读取。 您可以使用以下命令验证影子文件的所有权和权限:
# ls -l /etc/shadow ---------- 1 root root 618 Apr 7 07:52 /etc/shadow
下面给出了影子文件中示例行的典型结构。
user1:$6$5ps/XV21$EFmQ463GJZnsdF/:19089:0:99999:7:::
您可能已经知道,影子文件有 九个领域 用冒号隔开。
让我们快速浏览一下每个字段。
- 归档 1(登录名) – 这包含登录名 (user1),如出现在
passwd
文件。 - 归档 2(加密密码) – 此文件包含用户的散列(加密)密码。 如果此文件开头有一个感叹号 (!),则表示用户帐户已被锁定。 如果此字段为空,则用户没有密码。
- 归档 3(最后更改) – 此字段显示自上次修改密码时的 Unix 纪元(即 Unix 时间 – 1970 年 1 月 1 日 00:00:00 UTC)以来的天数。 如果此字段包含 0,则用户在下次登录时将被强制更改密码。
- 归档 4(最少) – 此字段显示在允许用户更改密码之前必须经过的最少天数 (mindays)。 您可以使用更改此字段值
chage
命令与-m
选项。 - 字段 5(最大) – 显示用户密码过期前密码有效的最大天数 (maxdays)。 如果该字段为 0,则表示此功能已禁用。 该字段的值可以更改为
chage
命令与-M
选项。 - 归档 6(警告) – 指示用户在密码过期前收到更改密码警告的天数(警告日)。 您可以使用更改此值
chage
命令与-W
选项或passwd
命令与-w
选项。 - 字段 7(密码到期) – 定义用户能够使用过期密码登录的最大允许天数。 这可以使用更改
chage
命令与-I
标志或passwd
命令与-i
旗帜。 - 字段 8(帐户到期) – 定义自 UNIX 时间以来用户帐户将过期且不再可用的天数。 您可以使用更改此字段的值
chage
命令与-E
选项。 - 字段 9(保留) – 此字段保留供将来使用。
如上所述,加密密码存储在影子密码文件中每个条目的第二个字段中,就在用户名之后。
因此,如果影子文件中的第二个字段为空,则用户没有密码。 请允许我向您展示一个 example 查找所有无密码的用户帐户。
在 Linux 中查找所有没有密码的用户帐户
要检测所有没有密码的本地用户帐户,只需运行以下命令 root
用户:
# awk -F: '$2 == "" { print $1, "has empty password!. Please set a strong password ASAP!!" }' /etc/shadow
样本输出:
ostechnix has empty password!. Please set a strong password ASAP!!
你也可以使用 getent
命令结合 grep
和 cut
用于识别 Linux 中无密码本地用户帐户的命令。
# getent shadow | grep -Po '^[^:]*(?=::)'
或者,
# getent shadow | grep '^[^:]*::' | cut -d: -f1
以上所有命令将仅列出密码为空的本地用户帐户。 如果要同时列出系统帐户和密码为空的用户帐户,请运行。
# getent shadow | grep -Po '^[^:]*(?=:.?:)'
或者,
# getent shadow | grep '^[^:]*:.?:' | cut -d: -f1
查找特定的无密码用户帐户
上述命令将列出所有没有密码的本地和系统帐户。 您还可以使用检查特定用户帐户的密码状态 passwd
命令与 -S
旗帜。
# passwd -S ostechnix
样本输出:
ostechnix NP 2022-04-07 0 99999 7 -1 (Empty password.)
这 passwd
命令将指示给定用户帐户的密码状态。 可能的值是:
- 力劲 – 用户帐户被锁定。
- NP – 用户帐户没有密码。
- 附言 – 用户帐户有一个可用的密码。
小心: 在基于 Debian 的系统中,密码状态将表示为 大号, ñ, 磷 分别。
在 Linux 中设置用户密码
您可以作为无密码用户登录,这非常好。 不过不推荐! 您必须设置至少包含 8 个字符的强密码,包括大写字母、小写字母、特殊字符和数字。
要在 Linux 中为用户帐户设置密码,请使用 passwd
命令为 root
像下面这样的用户。
作为根用户:
# passwd ostechnix
将 ostechnix 替换为您自己的用户名。
现在使用检查用户帐户的密码状态 passwd
命令:
# passwd -S ostechnix
样本输出:
ostechnix PS 2022-04-07 0 99999 7 -1 (Password set, SHA512 crypt.)
在 Linux 中锁定用户帐户
有时,您只想用空密码锁定用户帐户。 如果是这样,首先找到上述密码为空的用户并使用锁定他们 passwd
命令与 -l
标记为 root
像下面这样的用户。
# passwd -l ostechnix
样本输出:
Locking password for user ostechnix. passwd: Success
现在,检查用户帐户的状态:
# passwd -S ostechnix
样本输出:
ostechnix LK 2022-04-07 0 99999 7 -1 (Password locked.)
看? 用户已被锁定。 他不能再登录系统了。
您还可以使用 usermod
命令与 -L
(大写 L)标志来锁定用户。
# usermod -L ostechnix
在 Linux 中解锁用户帐户
要在 Linux 中解锁无密码用户,请使用 passwd
命令或 usermod
命令与 -p
作为 root
用户。
# passwd ostechnix
Enter 密码两次以解锁密码。
使用空密码解锁用户 usermod
命令是不可能的,你应该设置密码 usermod -p
解锁用户的密码。
# usermod -p <password-here> ostechnix
结论
在本教程中,我们解释了什么是影子密码文件以及该文件在 Linux 中的用途。 然后我们讨论了在 Linux 中查找所有没有密码的用户帐户的各种命令。 最后,我们学习了如何为用户设置密码,以及如何在 Linux 中锁定和解锁用户。