如何列出 Linux 中的所有用户
想知道您的计算机或网络上有多少 Linux 用户?以下是列出所有 Linux 用户的方法。
用户是Linux系统中最重要的组成部分。 Linux 为管理员提供了内置命令,使他们能够有效地管理用户。其中一个用于创建用户、删除用户和更改用户权限。但是列出系统上当前存在的所有用户怎么样?
在本文中,我们将讨论如何获取 Linux 中所有用户的列表,以及检查系统上是否存在用户的简要指南。
如何在 Linux 中显示所有用户的列表
创建新用户时,用户名、密码和其他详细信息将存储在 Linux 计算机上的特定文件中。幸运的是,Linux 允许您不受任何限制地读取和修改此类文件。使用这些文件,您可以了解与用户相关的信息,例如用户名、用户数量等。
使用密码文件
passwd 文件是一个文本文件,其中包含系统中当前存在的所有用户的密码记录。该文件位于本地存储的 /etc 目录中,包含以下信息:
用户名
加密密码
用户身份
用户组ID
全名
用户的/home目录
用户的登录 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 用户创建简单的“单行”程序,从终端执行快速操作。在上述代码中:
-F 代表字段分隔符。由于冒号字符是 /etc/passwd 文件中的分隔符,因此我们在 awk 命令中将冒号作为分隔符传递。
{ print $1} 指示系统打印第一个字段。在本例中,第一个字段是用户的用户名。
/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 上执行简单的计算任务至关重要。