如何在Linux中列出用户

您是否曾经想列出Linux系统中的所有用户或计算系统中的用户数量? 有用于创建用户,删除用户,列出已登录用户的命令,但是列出Linux中所有用户的命令是什么?

本教程将向您展示如何列出Linux系统中的用户。

使用获取所有用户列表 /etc/passwd 文件号

本地用户信息存储在 /etc/passwd 文件。 该文件中的每一行代表一个用户的登录信息。 要打开文件,您可以使用 cat 要么 less

less /etc/passwd

文件中的每一行都有七个由冒号分隔的字段,其中包含以下信息:

  • 用户名。
  • 加密密码(x 表示密码存储在 /etc/shadow 文件)。
  • 用户ID号(UID)。
  • 用户的组ID号(GID)。
  • 用户的全名(GECOS)。
  • 用户主目录。
  • 登录外壳程序(默认为 /bin/bash)。

如果只想显示用户名,则可以使用 awk 要么 cut 命令只打印包含用户名的第一个字段:

awk -F: '{ print $1}' /etc/passwd
cut -d: -f1 /etc/passwd
root
daemon
bin
sys
sync
...
...
sshd
vagrant
jack
anne

使用getent命令获取所有用户的列表

getent 命令显示来自在 /etc/nsswitch.conf 文件,包括 passwd 数据库,可用于查询所有用户的列表。

要获取所有Linux用户的列表,请输入以下命令:

getent passwd

linux getent list用户

如您所见,输出与显示广告内容时相同 /etc/passwd 文件。 如果您使用LDAP进行用户身份验证,则 getent 将同时显示两个的所有Linux用户 /etc/passwd 文件和LDAP数据库。

您也可以使用 awk 要么 cut 仅打印包含用户名的第一个字段:

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

检查Linux系统中是否存在用户#

现在,我们知道了如何列出所有用户,以检查用户是否在我们的Linux框中,我们可以简单地通过将用户列表管道到列表中来过滤用户列表。 grep 命令。

例如,确定是否有姓名的用户 jack 存在于我们的Linux系统中,我们可以使用以下命令:

getent passwd | grep jack

检查Linux系统中是否存在用户

如果用户存在,则上面的命令将打印用户的登录信息。 没有输出,表示该用户不存在。

我们还可以检查用户是否存在,而无需使用 grep 命令如下图:

getent passwd jack

与以前相同,如果用户存在,该命令将显示用户的登录信息。

如果要找出系统上有多少个用户帐户,请通过管道 getent passwd 输出到 wc 命令:

getent passwd | wc -l
33

从上面的输出中可以看到,我的Linux系统有33个用户帐户。

系统和普通用户

系统与常规(普通)用户之间没有真正的技术差异。 通常,系统用户是在安装操作系统和新软件包时创建的。 在某些情况下,您可以创建将由某些应用程序使用的系统用户。

普通用户是由root用户或具有sudo特权的其他用户创建的用户。 通常,普通用户具有真实的登录外壳和主目录。

每个用户都有一个称为UID的数字用户ID。 如果使用创建新用户时未指定 useradd 命令,UID将自动从 /etc/login.defs 文件取决于 UID_MINUID_MIN 价值观。

要检查 UID_MINUID_MIN 值,您可以使用以下命令:

grep -E '^UID_MIN|^UID_MAX' /etc/login.defs
UID_MIN          1000
UID_MAX         60000

从上面的输出中,我们可以看到所有普通用户的UID应该在1000到60000之间。知道最小值和最大值后,我们就可以查询系统中所有普通用户的列表。

以下命令将列出我们的Linux系统中的所有普通用户:

getent passwd {1000..60000}

Linux系统和普通用户

vagrant:x:1000:1000:vagrant,,,:/home/vagrant:/bin/bash
jack:x:1001:1001:,,,:/home/jack:/bin/bash
anne:x:1002:1002:Anne Stone,,,:/home/anne:/bin/bash
patrick:x:1003:1003:Patrick Star,,,:/home/patrick:/usr/sbin/nologin

你的系统 UID_MINUID_MIN 值可能会有所不同,因此上述命令的通用版本将为:

eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)}

如果您只想打印用户名,只需将输出通过管道传输到 cut 命令:

eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1

结论#

在本教程中,您学习了如何列出和过滤Linux系统中的用户,以及系统用户和普通Linux用户之间的主要区别是什么。

相同的命令适用于任何Linux发行版,包括Ubuntu,CentOS,RHEL,Debian和Linux Mint。

如有任何疑问,请随时发表评论。

终端用户

Sidebar