查看 /etc/passwd
文件(最直接)
命令:
cat /etc/passwd
说明:
- 所有用户信息存储在
/etc/passwd
文件中,每行代表一个用户。 - 输出格式:
用户名:密码占位符(x):用户ID(UID):组ID(GID):描述信息:家目录:默认Shell
john:x:1001:1001:John Doe:/home/john:/bin/bash
- 关键字段:
- UID:用户ID,系统用户通常为
0-999
(如root的UID=0),普通用户从1000
开始。 - Shell:若为
/sbin/nologin
或/bin/false
,表示是系统服务账户(非登录用户)。
- UID:用户ID,系统用户通常为
使用 getent
命令(推荐)
命令:
getent passwd
优点:
- 兼容性高,可查询LDAP/NIS等网络用户数据库(如果系统配置了这些服务)。
- 输出格式与
/etc/passwd
相同。
提取用户名列表
方法1:通过 awk
或 cut
awk -F: '{print $1}' /etc/passwd # 使用awk提取第一列(用户名) cut -d: -f1 /etc/passwd # 使用cut提取用户名
方法2:compgen
命令(仅限Bash)
compgen -u # 列出所有用户名(包括系统用户)
区分普通用户与系统用户
列出普通用户(UID ≥ 1000):
getent passwd {1000..60000} # 直接查询UID范围
或
awk -F: '$3 >= 1000 && $3 < 60000 {print $1}' /etc/passwd
列出系统用户(UID < 1000):
awk -F: '$3 < 1000 {print $1}' /etc/passwd
查看登录用户
命令:
who # 显示当前登录的用户及终端 w # 显示更详细信息(包括正在执行的命令) users # 仅显示登录的用户名
注意事项
- 权限要求:
- 普通用户可查看
/etc/passwd
,但部分系统用户可能被隐藏(如LDAP用户需getent
)。 - 某些工具(如
compgen
)依赖Shell环境。
- 普通用户可查看
- 家目录验证(辅助方法):
ls /home # 查看/home下的用户目录(不完整,系统用户通常无家目录)
- 用户有效性:
- 检查用户是否被锁定:
passwd -S 用户名
(状态显示LK
表示锁定)。 - 查看用户组:
groups 用户名
或id 用户名
。
- 检查用户是否被锁定:
总结建议
- 快速查看所有用户 → 用
getent passwd
或cat /etc/passwd
。 - 提取纯用户名列表 → 用
cut -d: -f1 /etc/passwd
。 - 检查登录情况 → 用
w
或who
。 - 系统用户过滤 → 结合
awk
按UID筛选。
引用说明: 基于Linux标准文档(
man 5 passwd
)及开源社区最佳实践,参考了Linux内核官方文档和Ubuntu/CentOS系统管理指南,具体命令行为可能因发行版(如Debian、RHEL)略有差异,建议查阅本地手册(man [命令]
)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8335.html