Linux 列出用户

2025年03月17日 | 阅读 9 分钟

任何时候,多个用户都可以访问单个计算机系统。对于这类分布式系统,系统管理员应采取准确的安全措施,以防一个用户侵犯另一个用户的隐私。

例如:

使用访问控制机制,它定义了所有用户的权限。

用户权限的修改可能是强制性的。例如,用户可能需要为其特定任务提高其权限,或者某个用户访问系统的能力可能需要完全撤销。

在这些情况下,系统管理员了解系统中每个用户的情况至关重要。

在本主题中,我们将探讨用于列出 Linux 操作系统用户的技术。命令行界面图形用户界面技术都可用于此操作。

/etc/passwd 文件

用户的详细信息存储在 /etc/passwd 文件中。此文件是纯文本文件。因此,我们可以使用 cat 或 less 命令读取此文件。

在此文件中,每一行都包含有关该特定用户的各种详细信息,并用冒号 (:) 分隔。

一行包含以下由冒号 (:) 分隔的详细信息。

  • 用户名
  • 密码
  • GID
  • UID
  • 家目录路径
  • 用户详情
  • 默认 Shell

用户名 - 它是用户的登录名。它不能包含空格或其他特殊字符。只允许使用字母数字字符。

密码 - 密码保存在基于 Linux 的操作系统中的 /etc/shadow 文件中。

GID - 所有组都有一个数字 ID 和一个组名,在基于 Linux 的操作系统中称为 GID 或组 ID。Linux 上的所有用户都应至少是一个组的成员。

因此,对于所有创建的用户,也会创建一个与用户名相似的组。然后将用户添加到该组中。主组的组 ID 将添加到此特定字段中。此主组是用户的组(默认)。

当用户是多个组的成员时,她/他可以使用 newgrp 命令在登录时修改它。普通组的 GUD 从 1000 开始。

如果我们的 Linux 未特别配置,则组 ID 必须与 UID 相似。

注意:root 组包含 GID 0。

UID - 所有用户都有一个数字 ID 和用户名,或者一个字母数字名称,称为 UID 或用户 ID。普通用户的 UID 从 1000 开始,root 用户包含 UID 0。

家目录路径 - 它包含一个目录的路径,其中将保存每个用户文件。通过此字段设置 shell 变量 $HOME。

用户详细信息 - 它包含用户的完整名称和其他详细信息,以逗号分隔列表形式。此步骤最基本的用途之一是设置用户的全名。只需在此处输入您的用户名的全名即可设置。

默认 Shell - 我们应该为基于 Linux 的系统上的用户设置一个 shell。默认情况下,对于能够登录系统的用户,必须设置 bashsh (/bin/sh) shell。但是,还有其他 shell,例如 csh、zsh 等。

系统用户设置了 /sbin/nologin shell;因此,他们将无法登录系统。如果希望禁用某些用户的登录过程,请将这些用户的此字段设置为 /sbin/nologin。

按名称排序和列出用户

我们可以按字母顺序排序和列出用户。为此,我们将应用之前的命令并包含 sort 命令。

命令如下:


Linux List Users

使用上述命令后,用户将按排序顺序显示。

列出没有密码的用户

有必要知道哪些用户没有密码,并采取必要的行动。要列出没有密码的用户,我们可以应用以下命令:


Linux List Users

使用上述命令后,我们将获得没有密码的用户列表。

通过磁盘使用情况列出用户

如果我们有一个大目录并且想知道哪个用户正在使其溢出,我们可以应用 du 命令来获取磁盘使用情况。

使用此命令,我们可以找出哪些用户正在占用磁盘空间。

命令将如下:


Linux List Users

使用上述命令后,我们将获得按 /home 目录的磁盘使用情况排序的用户列表。

列出已登录用户(当前)

我们有很多方法可以列出当前已登录的用户。第一种方法是使用 user 命令:


Linux List Users

上述命令将列出系统内具有开放会话的用户。

但是,此信息有点常见。但是,我们有其他命令可以提供更多详细信息。简单来说,命令是 w。


Linux List Users

我们将获得更多详细信息,例如会话开始的确切时间和终端会话可用。

现在,还有另一个命令,称为 who。此命令存在于整个 UNIX 系列中。因此,我们可以在另一个系统(例如 FreeBSD)上应用它。


Linux List Users

使用上述命令,我们还获得了当前已登录用户的一些详细信息。我们可以包含 -a 选项并显示所有详细信息。


Linux List Users

列出已登录用户(最近)

我们检查了如何获取当前已登录用户,但如何列出用户的登录历史记录呢?

我们可以使用 last 命令获取更多登录详细信息:


Linux List Users

此外,我们可以使用以下命令获取特定用户的登录信息:


Linux List Users

列出特定时间或日期的用户登录

为此,我们可以将 last 命令与 -t 参数一起使用:


Linux List Users

我们所要做的就是选择一个确切的时间和日期来列出在该特定时间登录的人。

列出 root 用户

通常,Linux 操作系统中只有一个 root 用户。如果有多个,如何列出它们?

为此,我们可以应用以下命令:


Linux List Users

我们可以使用上述命令过滤文件,以获取具有零 UID root 用户的信息。

另一种通过检查 /etc/group 文件的方法


Linux List Users

在这里,我们将通过 /etc/passwd 文件获取组路由中的用户。

我们还可以通过检查文件来检查任何用户何时可以作为 root 运行命令:

列出组中的所有用户

在 Linux 中,有两种重要的方法可以列出组中的用户。最直接和最简单的方法是像下面这样通过 /etc/group 文件获取成员:

上述命令将列出 group1 组中的成员。

第二种方法是使用 Debian 衍生发行版中的 member 命令等命令。默认情况下,它未安装在 Linux 发行版中。

列出用户数量

在 Linux 中,要列出用户数量,我们可以借助 wc 命令计算 /etc/passwd 文件中的行数,如下所示:


Linux List Users

上述命令将为我们提供普通用户和系统用户。

获取 sudo 用户

Linux 系统包含一个名为 sudo 的实用程序,它允许我们以另一个用户(通常是 root 用户)的身份运行命令。

在专业环境中,必须小心管理它。

了解哪些用户可以执行 sudo 命令也非常重要。列出与 sudo 组相关的用户就足够了。


Linux List Users

此组中的用户可以作为超级用户运行命令。

列出具有 SSH 访问权限的用户

SSH 允许用户访问网络上的远程计算机。此方法是安全的,并开发为 Telnet 的替代品。

默认情况下,每个普通用户都可以登录并访问 SSH。如果我们要限制它,我们可以应用 SSH 的配置文件(/etc/ssh/ssh_config)并包含以下指令:

我们还可以通过应用 AllowGroups 指令来允许组,而不是只允许用户:

这些指令指定谁可以使用该服务。我们不应忘记重启 SSH 服务。

列出对目录或文件具有访问权限的用户

我们可以通过两种方法向多个用户授予修改或访问目录和文件的权限。

第一种方法是,我们可以将用户添加到目录或文件的组中。

我们可以借助成员实用程序获取组的成员。

但是,如果我们希望此用户只访问此特定文件(而不是每个组权限)怎么办?

为此,我们可以借助 setfacl 命令为此特定文件使用 ACL,如下所示:

在这里,我们授予名为 newuser 的用户对名为 test 的文件的身份验证。它充当读取、写入和执行的身份验证。

现在,文件可以由所有者修改或访问。该用户被称为 newuser。那么,如何列出他们呢?

借助 getfacl 命令,我们可以获取它们:

我们可以使用上述命令获取每个对文件具有身份验证的用户及其相关权限。

列出禁用(锁定)的用户

作为 Linux 操作系统中的安全措施,我们可以锁定任何用户。这是一种预防措施,当不确定用户是否正在做错误的事情时,我们不想完全删除用户,而只想锁定他们进行调查。

我们可以使用以下命令锁定用户:


Linux List Users

应用上述命令后,名为“user1”的用户将无法再使用或登录系统。

列出远程用户 (LDAP)

我们可以使用一个名为 getent 的命令列出远程和本地用户。


Linux List Users

上述命令将列出 NIS 或 NDAP 用户以及本地系统用户或其他网络用户。

我们可以以类似的方式将此命令的结果通过管道传输到上述命令。

getent 命令还可以列出组帐户,如下所示:


Linux List Users

我们可以检查该命令的手册页,以了解该命令可以在哪些其他数据库中查找。

列出用户的技术

技术 1:“cat”命令

我们可以使用 cat 命令在命令行上列出每个用户,以显示 Linux /etc/passwd 文件中每个用户的密码和帐户详细信息。

要应用 cat 命令列出 Linux 操作系统中的每个用户,必须按顺序执行以下步骤:

  • 启动终端。
  • 执行以下命令。

Linux List Users

运行该命令将显示用户名以及一些其他信息。我们可以滚动此列表以查看 Linux 操作系统中的每个用户。

技术 2:“awk”命令

如果您只想显示用户名,并且不需要 cat 命令返回任何技术信息,则此命令非常有用。

要应用此命令列出 Linux 中的每个用户,必须按顺序执行以下步骤。

  • 启动终端。
  • 执行以下命令:

Linux List Users

当我们在终端中执行此命令时,我们将只收到用户名。此外,此列表包含我们 Linux 系统中的每个用户。

技术 3:“compgen”命令

compgen 命令用于仅显示用户名,并避免所有其他信息。

T

要应用 compgen 命令列出 Linux 的每个用户,必须按顺序执行以下步骤:

  • 启动终端。
  • 执行以下命令:

Linux List Users

我们将使用此命令获取与我们的 Linux 操作系统连接的每个用户名。

技术 4:“getent”命令

cat 命令的结果与 getent 命令的结果非常相似,因为它显示了用户名和一些其他详细信息。

要应用 getent 命令列出 Linux 中的每个用户,必须按顺序执行以下步骤:

  • 启动终端。
  • 执行以下命令:

Linux List Users

上述命令将列出我们 Linux 系统中的每个用户以及一些其他信息。


下一主题#