在 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
等)的记录信息,它可以根据指定的数据库类型和键来检索条目。
$getent --help
Usage: getent [OPTION...] database [key ...]
Get entries from administrative database.
-i, --no-idn disable IDN encoding
-s, --service=CONFIG Service configuration to be used
-?, --help Give this help list
--usage Give a short usage message
-V, --version Print program version
Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.
Supported databases:
ahosts ahostsv4 ahostsv6 aliases ethers group gshadow hosts initgroups
netgroup networks passwd protocols rpc services shadow
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.
1、查看本地的主机文件(/etc/hosts
)中包含的指定域名信息。
[root@localhost ~]# getent hosts 127.0.0.1
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
2、查看本地密码文件(/etc/passwd
)中指定用户信息。
[root@localhost ~]# getent passwd user1
user1:x:1000:1000::/home/user1:/bin/bash
3、从 /etc/group
数据库中检索指定组信息。
[root@localhost ~]# getent group user1
user1:x:1000:
那么使用getent如何快速找出 Linux 中的真实用户(root 用户和普通用户)?
方法一:
$ getent passwd | awk -F: '$3 >= 1000 && $3 < 65344 || $3 == 0 {print $1}'
root
agent
getent passwd
用于检索/etc/passwd
数据库中的所有用户信息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} | awk -F: '{print $1}'
root
agent
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 的用户信息。