Linux系统中密码为空的用户

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 在 RHEL 系统中,用户密码经过哈希处理并存储在名为 /etc/shadow 的安全文件中。Shadow密码文件包含用户帐户的用户身份验证信息和密码过期策略(password aging)的详细信息。

最糟糕的密码不是弱密码,而是根本没有密码。作为系统管理员,您必须确保每个用户帐户都有一个强密码。接下来我将简要的解释如何在 Linux 中查找密码为空的帐户。

在进入主题之前,让我们快速回顾一下Shadow文件及其用途。

1.目录
Shadow文件介绍
查找Linux上所有没有设置密码的账户
查找特定状态的密码状态
在Linux中,如何设置账户密码
在Linux中,如何对账户上锁
在Linux中,如何对账户进行解锁操作
总结
2.Shadow文件
在 RHEL 系统中,用户密码经过哈希处理并存储在名为 /etc/shadow 的安全文件中。Shadow密码文件包含用户帐户的用户身份验证信息和密码过期策略(password aging)的详细信息。

Shadow文件归 root 用户所有,且只有超级用户才能读取。您可以使用以下命令验证Shadow文件的所有权和权限:

#  ls  -l /etc/shadow 
---------- 1 root root 618 Apr  7 07:52 /etc/shadow

下面给出了影子文件中示例行的典型结构:

user1:$6$5ps/XV21$EFmQ463GJZnsdF/:19089:0:99999:7:::

您可能已经知道,Shadow文件有九个字段,每个字段间采用冒号分隔。

接下来我们快速浏览一下每个字段。

字段1(登录名)- 标识了一个登录帐号,同文件/etc/passwd中的相同。
字段2(加密后密码) -包含用户对应的采用散列加密方式加密后的密码。如果此字段开头有一个感叹号 (!),则表示该用户帐户已被锁定。如果此字段为空,则该用户没有密码。
字段3(上次更改)- 此字段显示最后一次修改密码的时间。如果此字段包含 0,则用户在下次登录时将被强制更改密码。
字段4(最短天数)- 此字段显示在允许用户更改密码之前必须经过的最短天数(mindays)。您可以使用带有 -m 选项的 chage 命令来更改此字段的值。
字段5(最大天数)- 显示用户密码过期前密码有效的最大天数 (maxdays)。如果该字段为 0,则表示此功能已禁用。可以使用带有 -M 选项的 chage 命令来更改该字段的值。
字段6(警告)- 表示用户在密码过期前收到更改密码警告的天数(警告日)。您可以使用带有 -W 选项的 chage 命令或带有 -w 选项的 passwd 命令来更改此值。
字段7(密码过期)- 定义用户能够使用过期密码登录的最大允许天数。这可以使用带有 -I 标志的 chage 命令或带有 -i 标志的 passwd 命令来更改。
字段8(帐户到期) - 定义用户的帐户将到期且不再可用的天数。您可以使用带有 -E 选项的 chage 命令更改此字段的值。
字段 9(保留)- 该字段保留供将来使用。
如上所述,加密后的密码存储在Shadow文件中每个条目的第二个字段中,就在用户名之后。

因此,如果影子文件中的第二个字段为空,则用户没有密码。下面,我向您展示一个查找所有无密码用户帐户的示例。

3.查找所有没有密码的账户
要检测所有没有密码的本地用户帐户,只需以 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 '^1*(?=::)'

也可以采用下面的命令:


以上所有命令将仅列出密码为空的本地用户帐户。如果要同时列出所有密码为空的帐户,下面的两个命令都可以实现该功能:
# getent shadow | grep '^[^:]*::' | cut -d: -f1
# getent shadow | grep -Po '^[^:]*(?=:.?:)'
# getent shadow | grep '^[^:]*:.\?:' | cut -d: -f1

image.png

图 1:查找无密码的账户

4.查看特定账户的密码状态
上述命令将列出所有没有密码的帐户。您还可以使用带有 -S 标志的 passwd 命令检查特定用户帐户的密码状态

# passwd -S ostechnix

下面是一个上述命令的输出示例:ostechnix NP 2022-04-07 0 99999 7 -1 (Empty password.)

passwd命令将指示给定用户帐户的密码状态。可能的值是:

LK – 该帐户被锁定。
NP - 该帐户没有密码。
PS – 该帐户有一个可用的密码。
注意:在基于 Debian 的系统中,密码状态将分别用L、N、P来标识。

5.在Linux中设置账户密码
您可以作为无密码用户登录,但并不推荐!您必须设置至少包含 8 个字符的强密码,且密码中要包括大写字母、小写字母、特殊字符和数字。

要在 Linux 中为用户帐户设置密码,请以 root 用户身份执行passwd 命令,如下所示:

作为根用户:

# passwd ostechnix

使用上述命令时,请将ostechnix 替换为您自己的用户名。

现在我们用passwd命令来检查帐户的密码状态:

# passwd -S ostechnix

输出示例如下:

ostechnix PS 2022-04-07 0 99999 7 -1 (Password set, SHA512 crypt.)

image.png

在Linux中锁定账户
有时,您想要锁定一个没有密码的账户。如果是这样,首先如上所述找到密码为空的用户,以root用户的身份执行带有 -l 标志的 passwd 命令来锁定账户,其命令如下所示:

# passwd -l ostechnix

下面是上述命令的输出示例:

Locking password for user ostechnix.

passwd: Success

现在我们再来检查下帐户的状态:

# passwd -S ostechnix

其输出示例如下

ostechnix LK 2022-04-07 0 99999 7 -1 (Password locked.)

从输出情况可以看出用户已被锁定,且不能再登录系统了。

您还可以使用带有 -L(大写 L)标志的 usermod 命令来锁定用户。

# usermod -L ostechnix

在Linux中解锁账户
要在 Linux 中解锁无密码用户,请以root身份执行 passwd 命令或带有-p的usermod命令,其命令如下:

# passwd ostechnix

输入两次密码以解锁密码。

使用 usermod 命令解锁用户密码为空的用户是不可能的,您可以使用 usermod -p 设置密码来解锁用户的密码。

# usermod -p <password-here> ostechnix

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


  1. :
相关文章
|
1月前
|
Linux
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
77 24
Linux系统之whereis命令的基本使用
|
3天前
|
存储 缓存 Linux
Linux系统中如何查看CPU信息
本文介绍了查看CPU核心信息的方法,包括使用`lscpu`命令和读取`/proc/cpuinfo`文件。`lscpu`能快速提供逻辑CPU数量、物理核心数、插槽数等基本信息;而`/proc/cpuinfo`则包含更详细的配置数据,如核心ID和处理器编号。此外,还介绍了如何通过`lscpu`和`dmidecode`命令获取CPU型号、制造商及序列号,并解释了CPU频率与缓存大小的相关信息。最后,详细解析了`lscpu`命令输出的各项参数含义,帮助用户更好地理解CPU的具体配置。
30 8
|
3天前
|
存储 运维 监控
深度体验阿里云系统控制台:SysOM 让 Linux 服务器监控变得如此简单
作为一名经历过无数个凌晨三点被服务器报警电话惊醒的运维工程师,我对监控工具有着近乎苛刻的要求。记得去年那次大型活动,我们的主站流量暴增,服务器内存莫名其妙地飙升到90%以上,却找不到原因。如果当时有一款像阿里云 SysOM 这样直观的监控工具,也许我就不用熬通宵排查问题了。今天,我想分享一下我使用 SysOM 的亲身体验,特别是它那令人印象深刻的内存诊断功能。
|
1月前
|
安全 Linux 数据安全/隐私保护
linux root登陆,密码正确但,错误提示su: Authentication failure
通过系统化的排查和解决方案,可以有效应对 `su: Authentication failure` 问题,确保系统安全和用户权限的正确管理。
262 36
|
3月前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
310 78
|
2月前
|
缓存 安全 Linux
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
166 23
|
3月前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
103 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
3月前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
138 13
|
4月前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
130 3
|
3月前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
105 0