最直接有效的方式是读取/etc/passwd和/etc/group文件查看本地用户与组;普通用户可用cat、cut、awk提取用户名或过滤UID≥1000者;查组名用cut -d: -f1 /etc/group;兼顾网络目录时应使用getent passwd/group;当前用户所属组用groups或id命令。

最直接有效的方式是分别读取 /etc/passwd 和 /etc/group 这两个核心配置文件,它们分别定义了系统所有本地用户和本地组的完整集合。
查看所有用户:读取 /etc/passwd
该文件每行代表一个用户,字段用冒号分隔,包含用户名、UID、主组GID、家目录、登录Shell等信息。普通用户有读权限:
-
列出全部用户记录:
cat /etc/passwd -
仅提取用户名:
cut -d: -f1 /etc/passwd或awk -F: '{print $1}' /etc/passwd -
过滤普通用户(UID ≥ 1000):
awk -F: '$3 >= 1000 {print $1}' /etc/passwd
查看所有用户组:读取 /etc/group
该文件每行定义一个组,格式为“组名:密码占位符:GID:成员列表”。注意:成员字段只列附加用户,不包含主组用户(例如用户 alice 的主组是 alice,但 alice 组那一行的成员字段通常为空):
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
-
显示全部组信息:
cat /etc/group -
只看组名:
cut -d: -f1 /etc/group -
查某组是否存在(避免误匹配注释或子串):
getent group 组名—— 比grep更准确
兼顾网络目录(如 LDAP/SSSD)时用 getent
如果系统启用了集中账号管理(通过 /etc/nsswitch.conf 配置),/etc/passwd 和 /etc/group 只反映本地部分。此时应使用:
-
所有用户(含网络用户):
getent passwd -
所有组(含网络组):
getent group -
仅查本地源,排除网络结果:
getent files passwd或getent files group
补充:快速确认当前用户归属哪些组
这不是查“系统所有组”,而是查“当前用户实际生效的组权限”:
-
groups—— 显示当前用户所属的组名(主组 + 附加组) -
id—— 显示 UID、GID、所有 GID 及对应组名,更详细,支持id -Gn查名称、id -u查 UID 等

















