linux如何验证一个用户是否存在(),如何在Linux中列出用户

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

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

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

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

less /etc/passwd

82e1f5c1e8024bfce3c82e8419496aa5.png用户列表

从上面的输出中可以看到,每行都有七个用冒号分隔的字段,其中包含以下信息:

用户名

加密的密码(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

8d04fadd0b700937a437924575b2a1e9.png用户列表

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

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

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

getent passwd | cut -d: -f1

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

现在我们知道了如何列出所有用户,要检查用户是否在我们的Linux框中,我们可以通过将列表传递给

例如,要确定jackLinux系统中是否存在具有名称的用户,我们可以使用以下命令:

getent passwd | grep jack

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

我们也可以不使用以下grep命令来检查用户是否存在:

getent passwd jack

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

如果要查找系统上有多少个用户帐户,请将getent passwd输出通过管道传递给以下wc命令:

getent passwd | wc -l

33

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

系统用户和普通用户

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

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

每个用户都有一个称为UID的数字用户ID。如果在使用/etc/login.defs根据UID_MIN和UID_MIN值从文件中自动选择UID 。

要检查系统上的UID_MIN和UID_MIN值,可以使用以下命令:

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

UID_MIN 1000

UID_MAX 60000

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

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

getent passwd {1000..60000}

输出:

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_MIN和UID_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用户之间的主要区别是什么。

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

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值