一行命令找出 Linux 中所有真实用户
接触过 Linux 的小伙伴们都知道在 Linux (或者说类 Unix)中,有三种类型的用户:
超级用户(UID 为 0):即 root 用户,拥有最高权限。
系统用户(UID 为 1~999):系统内建用户,用于运行系统服务和守护进程。
普通用户(UID 为 1000~60000):为了让使用者能够使用 Linux 系统资源而建立的,用户新建的账号一般就是普通账号。
那么现在问题来了,如何快速找出 Linux 中的真实用户(root 用户和普通用户)?
正式开始之前,我们先介绍一个工具——getent。
getent 命令
getent 其实是 "get entries" 的缩写,功能是用于查看系统数据库中(包括 /etc/passwd、/etc/shadow、/etc/group、/etc/hosts 等)的记录信息,它可以根据指定的数据库类型和键来检索条目。
(1) 查看本地的主机文件(/etc/hosts)中包含的指定域名信息。
(2) 查看本地密码文件(/etc/passwd)中指定用户信息。
(3) 从 /etc/group 数据库中检索指定组信息。
我们回到问题上来:如何快速找出 Linux 中的真实用户(root 用户和普通用户)?
方法一:
(1) getent passwd 用于检索 /etc/passwd 数据库中的所有用户信息
(2) awk 命令:
-F::指定字段分隔符为冒号 (:)
$3 >= 1000 && \$3 < 65344:表示判断第三个字段(用户 ID)大于或等于 1000 且小于 65344
\$3 == 0:表示判断第三个字段(用户 ID)等于 0
{print $1}:打印第一个字段(用户名)
总结一下:这条命令将检索 /etc/passwd 数据库中的所有用户信息,并打印出用户 ID 大于或等于 1000 且小于 65344,或者用户 ID 等于 0 的所有用户的用户名。
但是有的小伙伴看到这么一长串的命令就犯难了,"我文本三剑客掌握的不是很好,这条命令尤其是里面的判断看的我头都晕了,还有没有更简单的方法呢?"
方法二:
getent passwd 0 {1000..60000} 命令用于检索系统中用户 ID 为 0 以及范围从 1000 到 60000 的所有用户信息
awk -F: '{print $1}:表示对前面输出的内容进行处理——打印第一个字段
这里补充一下:getent passwd 0 {1000..60000} 命令使用花括号扩展 ({1000..60000}) 来生成一个 0 和从 1000 到 60000 的数字序列。
然后,getent passwd 命令使用这些数字作为参数,以检索系统中用户 ID 为 0 和从 1000 到 60000 的用户信息。
版权声明: 本文为 InfoQ 作者【互联网工科生】的原创文章。
原文链接:【http://xie.infoq.cn/article/75bd21e066431f202ea50d68d】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论