如何列出 Linux 中的所有用户如何列出 Linux 中的所有用户如何列出 Linux 中的所有用户如何列出 Linux 中的所有用户
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何列出 Linux 中的所有用户

想知道您的计算机或网络上有多少 Linux 用户?以下是列出所有 Linux 用户的方法。

用户是Linux系统中最重要的组成部分。 Linux 为管理员提供了内置命令,使他们能够有效地管理用户。其中一个用于创建用户、删除用户和更改用户权限。但是列出系统上当前存在的所有用户怎么样?

在本文中,我们将讨论如何获取 Linux 中所有用户的列表,以及检查系统上是否存在用户的简要指南。

如何在 Linux 中显示所有用户的列表

创建新用户时,用户名、密码和其他详细信息将存储在 Linux 计算机上的特定文件中。幸运的是,Linux 允许您不受任何限制地读取和修改此类文件。使用这些文件,您可以了解与用户相关的信息,例如用户名、用户数量等。

使用密码文件

passwd 文件是一个文本文件,其中包含系统中当前存在的所有用户的密码记录。该文件位于本地存储的 /etc 目录中,包含以下信息:

  1. 用户名

  2. 加密密码

  3. 用户身份

  4. 用户组ID

  5. 全名

  6. 用户的/home目录

  7. 用户的登录 shell

在终端中输入 cat /etc/passwd 或 less /etc/passwd 以读取文本文件。打开 /etc/passwd 文件将生成如下所示的输出。

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh

上述输出包含七个字段,其中包含与用户相关的信息。这些字段由分隔符分隔——在本例中为冒号。输出中的每一行表示一个用户。

要借助 passwd 文件获取所有用户名的列表:

awk -F: '{ print $1}' /etc/passwd

awk 是一个命令行实用程序,允许 Linux 用户创建简单的“单行”程序,从终端执行快速操作。在上述代码中:

  1. -F 代表字段分隔符。由于冒号字符是 /etc/passwd 文件中的分隔符,因此我们在 awk 命令中将冒号作为分隔符传递。

  2. { print $1} 指示系统打印第一个字段。在本例中,第一个字段是用户的用户名。

  3. /etc/passwd 文件包含与用户相关的数据。

执行上述命令将输出所有用户的用户名。由于 /etc/passwd 文件包含系统用户,因此输出也将包含他们的用户名。

root
daemon
bin
sys
sync
games
man

您可以稍微调整 awk 命令以打印用户的全名。输入以下命令以显示 Linux 中用户的全名:

awk -F: '{ print $5}' /etc/passwd

由于系统用户具有相同的用户名和全名,因此您不会注意到输出有任何差异。只有您添加到系统中的用户才会有不同的用户名和全名。

或者,您也可以使用 cut 代替 awk 命令。 cut 的语法与 awk 命令非常相似。

要在 Linux 中使用 cut 打印用户名:

cut -d: f1 /etc/passwd

这里,-d 是分隔符,f1 表示第一个字段(用户名),/etc/passwd 是包含数据。

要使用 cut 打印用户的名字:

cut -d: f5 /etc/passwd

同样,您可以通过简单地将 f5 替换为 f1-f7 来输出 /etc/passwd 文件中的其他字段。

使用 getent 命令列出用户

getent 命令打印作为系统数据库的重要文本文件的内容。 /etc/passwd 和 /etc/nsswitch.conf 等文件分别包含与用户和网络相关的信息,可以使用 getent 命令读取。

使用 getent 打印 /etc/passwd 文件的内容:

getent passwd

输出将包含七个不同的字段,以冒号字符分隔。每个字段都保留用于特定信息,包括用户的用户名和主目录路径。

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh

您可以将 getent 命令与 awk 或 cut 链接起来以仅获取用户名列表。

getent passwd | awk -F: '{print $1}'
getent passwd | cut -d: -f1

要打印用户的全名:

getent passwd | awk -F: '{print $5}'
getent passwd | cut -d: -f5

检查用户是否存在

在某些情况下,您可能想要检查 Linux 系统上是否存在用户。当您想要从文件中获取特定的文本模式时,grep 命令会派上用场。

您可以使用以下任意命令来检查用户是否存在。

compgen -u | grep username
getent passwd | grep username

如果该用户存在,则与其关联的登录信息将显示在屏幕上。另一方面,如果用户不在系统中,则会发生错误。

要在不使用 grep 的情况下检查系统上是否存在用户:

getent passwd username

您还可以使用 grep 和 echo 管道传输 getent 或 compgen 命令来显示自定义输出。

getent passwd | grep -q username && echo "User found" || echo "User not found"
compgen -u | grep -q username && echo "User found" || echo "User not found"

如果系统上存在该用户,上面的命令将打印“找到用户”,如果不存在,则打印“找不到用户”。

计算系统上的用户数量

要统计 Linux 系统上存在的用户数:

compgen -u | wc -l
getent passwd | wc -l

在上面的命令中,compgen和getent负责显示包含所有用户以及与其相关的其他信息的列表。 wc 代表字数统计,用于计算输出中的字数或行数。 -l 标志表示行。

验证 Linux 中的用户帐户

每个 Linux 管理员都应该知道如何管理系统上的其他用户。掌握允许您创建、删除、控制和列出其他用户的 Linux 命令是开始用户管理的好方法。

如果您只是初学者,熟悉 Linux 环境应该是您的首要目标。安装第一个 Linux 发行版后,您必须立即执行某些操作。学习一些基本命令就是其中之一,对于在 Linux 上执行简单的计算任务至关重要。

©2015-2025 艾丽卡 support@alaica.com