
如何查找Linux所有用户
在Linux中有命令可以创建用户,删除用户,列出已登录的用户,你可能会发现,为什么没有列出用户的命令
在Linux中有命令可以创建用户,删除用户,列出已登录的用户,你可能会发现,为什么没有列出用户的命令。
那么Linux又怎么列出用户,在本教程中我们说明如何列出Linux用户。
本地用户信息存储在/etc/passwd文件中。此文件中的每一行代表一个用户的登录信息,您可以使用cat或less 命令查看
less /etc/passwdroot:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin从输出中可以看出,每行有七个由冒号分隔的字段,其中包含的信息包括。
用户名,加密密码(x表示密码存储在/etc/shadow文件中),用户UID,用户的组ID号(GID)
用户的全名GECOS,用户家目录,登录shell,默认为/bin/bash
如果您只想显示用户名,可以使用命令awk或者cut只打印包含用户名的第一个字段。
awk -F: '{ print $1}' /etc/passwd
cut -d: -f1 /etc/passwdroot
daemon
getent命令
getent命令会显示/etc/nsswitch.conf文件配置的passwd数据库记录,这些记录中包含Linux用户的信息
如果使用LDAP进行用户身份验证,getent则显示/etc/passwd文件和LDAP数据库中的所有Linux用户。
要获取所有Linux用户的列表,你可以在终端运行命令getent passwd。
getent passwdroot:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
.....如您所见,输出的内容与/etc/passwd文件的内容是一样的。您可以使用管道的方式传递给awk或cut 命令只打印包含用户名的第一个字段。
getent passwd | awk -F: '{ print $1}'getent passwd | cut -d: -f1检查Linux 用户是否存在
现在我们知道如何列出所有用户,要检查用户是否存在于我们的Linux系统中,我们可以通过将列表传递给grep命令来过滤用户列表。
例如,要检查myfreax用户是否存在于我们的Linux系统中,可以运行命令getent passwd | grep myfreax。
如果用户存在,则上面的命令将打印用户的信息。如果没有输出则表示用户不存在。
我们还可以不使用grep命令的情况下检查用户是否存在,运行命令getent passwd myfreax。与之前相同,如果用户存在,该命令将显示用户的信息。
getent passwd | grep myfreaxmyfreax:x:1000:1000:myfreax,,,:/home/workspace/myfreax:/usr/bin/zsh如果要查找系统上有多少用户帐户,可以将getent passwd输出结果通过管道传递给wc命令。
getent passwd | wc -l33从上面的输出可以看出,我的Linux系统有33个用户帐户
系统和普通用户
系统与普通用户之间没有真正的技术差异。通常在安装操作系统和新软件包时会创建系统用户。在某些情况下,您可以创建将由某个应用程序使用的系统用户。
普通用户是由root用户或具有sudo权限的用户创建。通常普通用户具有真实的登录shell和家目录。
每个用户都有一个名为UID的数字用户ID。如果在使用useradd命令创建新用户时未指定,则将/etc/login.defs根据UID_MIN和UID_MIN值自动从文件中选择UID 。
要检查Linux系统UID_MIN和UID_MIN值,可以运行命令grep -E '^UID_MIN|^UID_MAX' /etc/login.defs。
我们可以根据系统的UID_MIN和UID_MIN值来找到所有普通用户,下面的命令将会直接读取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用户之间的主要区别。
相同的命令适用于任何Linux发行版,包括Ubuntu,CentOS,RHEL,Debian和Linux Mint
如果您有任何疑问,请随时发表评论





