在 Linux 中查找密码为空的用户帐户

最糟糕的密码不是弱密码,而是根本没有密码。 和系统一样 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 命令结合 grepcut 用于识别 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 – 用户帐户没有密码。
  • 附言 – 用户帐户有一个可用的密码。

在 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 中为用户设置密码

在 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 -p 解锁此用户的密码。

# usermod -p <password-here> ostechnix

结论

在本教程中,我们解释了什么是影子密码文件以及该文件在 Linux 中的用途。 然后我们讨论了在 Linux 中查找所有没有密码的用户帐户的各种命令。 最后,我们学习了怎样为用户设置密码,以及怎样在 Linux 中锁定和解锁用户。