Linux查看用户列表方法
- Linux
- 2025-06-26
- 8
在Linux系统中,查询所有用户是系统管理的基础操作,常用于账户管理、权限审计或安全排查,以下是几种高效可靠的方法,均基于Linux官方文档和行业标准实践(参考man passwd及man getent):
核心方法详解
直接解析用户数据库文件
Linux本地用户信息存储在 /etc/passwd 文件中,每行代表一个用户,格式为:
用户名:密码占位符(x):UID:GID:描述信息:主目录:登录Shell
操作命令:
cat /etc/passwd # 查看完整信息 cut -d: -f1 /etc/passwd # 仅提取用户名列表
输出示例:
root daemon bin ... your_username
使用 getent 命令(推荐)
此命令兼容本地账户及网络账户服务(如LDAP/NIS),确保查询完整性:

优势: 自动识别系统配置的用户源,避免遗漏网络账户。
利用 awk 过滤输出
提取用户名并排序(适合脚本处理):
awk -F: '{print $1}' /etc/passwd | sort
参数说明:

- -F: 指定冒号为字段分隔符
- {print $1} 输出第一字段(用户名)
快速查询登录用户(非系统账户)
区分可登录用户与系统服务账户:
grep -v "/nologin|/false" /etc/passwd | cut -d: -f1
原理: 排除Shell为/sbin/nologin或/usr/sbin/false的系统账户。
关键注意事项
-
权限要求
普通用户可执行查询,但 /etc/passwd 默认全局可读(权限-rw-r--r--)。
-
UID范围识别

- 系统账户: UID范围 0~999(CentOS/RHEL)或 0~499(Debian/Ubuntu)
- 普通用户: UID ≥1000
查看命令: awk -F: '$3 >= 1000 {print $1}' /etc/passwd # 仅显示普通用户
-
伪用户与无效账户
部分服务账户无主目录(如_apt、systemd-network),需结合业务判断是否需保留。
- 基础查询 → 使用 getent passwd | cut -d: -f1
- 脚本处理 → 用 awk 按条件过滤
- 用户有效性检查 → 结合 grep 排除非登录账户
- 审计合规 → 导出到文件: getent passwd > all_users.txt
- nginx – 用户名
- x – 密码占位符(实际密码在/etc/shadow)
- 101 – 用户ID (UID)
- 101 – 组ID (GID)
- nginx user – 描述信息
- /nonexistent – 主目录路径
- /usr/sbin/nologin – 登录Shell(禁止登录)
应用场景建议
附:用户信息字段说明
以 nginx:x:101:101:nginx user:/nonexistent:/usr/sbin/nologin 为例:
引用说明: 本文内容基于Linux核心文档(man 5 passwd)、Filesystem Hierarchy Standard及SysAdmin最佳实践,命令兼容主流发行版(Ubuntu/CentOS/Debian等)。