直接查 /etc/passwd 中 UID 小于 1000 的条目可列出系统内置账号,awk -F: '$3 < 1000 {print $1, $3}' 是最常用、最清晰的筛选方式。

直接查 /etc/passwd 中 UID 小于 1000 的条目,就能列出系统内置账号。这类账号通常不用于人工登录,而是为服务、守护进程或系统功能所设。
用 awk 筛选并显示用户名和 UID
这是最常用、最清晰的方式:
awk -F: '$3- 输出示例:
root UID:0、daemon UID:1、sys UID:3、sync UID:4 - 加个排序更易读:
awk -F: '$3
用 getent 命令(兼容 LDAP/NIS 环境)
当系统接入了集中认证(如 LDAP),getent 比直接读 /etc/passwd 更全面:
getent passwd | awk -F: '$3- 它会同时拉取本地 + 网络数据库中的系统账号,适合混合环境
- 若只关心本地账号,仍推荐用
/etc/passwd方式,避免误含远程系统账号
补充判断:排除 root,只看“纯系统用户”
UID 0 是 root,属于超级用户;真正意义的“系统内置账号”一般指 UID 1–999:
awk -F: '$3 >= 1 && $3- 这样能跳过 root,聚焦在
daemon、sys、www-data、mysql等典型服务账户 - 注意:部分发行版(如 RHEL/CentOS)可能把某些服务账号 UID 设为 999 或更低,但仍在该范围内
快速验证某个账号是否属系统用户
遇到不确定的用户名(比如 sshd、polkitd),可单查其 UID:
-
id -u sshd或getent passwd sshd | cut -d: -f3 - 再结合
getent passwd sshd | cut -d: -f7查 shell —— 若是/usr/sbin/nologin或/bin/false,基本可确认是系统账号


















