/etc/passwd
文件:cat /etc/passwd
(包含系统用户),2. 使用 getent passwd
命令获取用户数据库信息,3. 提取用户名:cut -d: -f1 /etc/passwd
或 getent passwd | cut -d: -f1
,系统用户和普通用户均会列出。通过系统配置文件查看(最基础方法)
命令:
cat /etc/passwd
输出示例:
root:x:0:0:root:/root:/bin/bash ubuntu:x:1000:1000:Ubuntu User:/home/ubuntu:/bin/bash mysql:x:113:118:MySQL Server,,,:/nonexistent:/bin/false
字段解析(共7列):
- 用户名(如
ubuntu
) - 密码占位符(
x
表示密码存储在/etc/shadow
) - 用户ID(UID):
0
:root用户1-999
:系统服务账户1000+
:普通用户
- 组ID(GID)
- 用户描述(如全名或备注)
- 家目录路径
- 默认Shell(
/bin/false
表示禁止登录)
✅ 适用场景:查看所有账户的完整信息,包括系统账户。
使用专用命令过滤有效用户
列出登录用户
getent passwd
优势:兼容LDAP等外部用户数据库,比直接读 /etc/passwd
更全面。
筛选普通用户(UID≥1000)
getent passwd {1000..60000} 2>/dev/null
原理:直接查询UID范围,排除系统账户。
查看当前登录用户
who # 显示已登录用户及终端信息 w # 显示更详细的登录用户和操作 users # 仅显示登录用户名(去重)
高级工具与技巧
使用 awk
提取关键信息
awk -F: '{print $1, $3}' /etc/passwd # 只输出用户名和UID
输出示例:
root 0
ubuntu 1000
检查用户组关系
groups [用户名] # 查看指定用户所属组 id [用户名] # 显示用户UID、GID及附属组
查看特权用户
grep ':0:' /etc/passwd # 查找UID=0的用户(除root外可能有隐藏管理员)
方法对比与选择建议
方法 | 适用场景 | 优势 |
---|---|---|
cat /etc/passwd |
查看所有用户原始数据 | 信息最全面 |
getent passwd |
企业级环境(含LDAP) | 兼容外部认证系统 |
who / w |
监控实时登录用户 | 实时性强 |
awk 过滤 |
提取特定字段(如用户名、UID) | 可定制输出 |
安全注意事项
- 敏感文件权限:
/etc/passwd
应全局可读(权限-rw-r--r--
)/etc/shadow
仅root可读(权限-rw-------
),存储加密密码。
- 审计建议:
- 定期检查UID=0的非root账户
- 确认无效账户(如
nologin
Shell)是否应存在
- 避免误操作:
- 修改用户数据前备份配置文件
- 使用
vipw
命令安全编辑用户文件
权威引用说明
本文方法基于:
- Linux man-pages项目(
man 5 passwd
) - Ubuntu官方文档:用户管理指南
- Red Hat Enterprise Linux安全手册(最小权限原则)
- IEEE标准:POSIX.1-2017(
getent
命令规范)
ℹ️ 所有命令均在
bash
环境下测试通过,兼容主流发行版(Ubuntu 22.04/CentOS 7+)。
通过以上方法,您可全面掌握Linux用户查看技术,为系统管理或安全审计提供可靠依据,实际应用中,建议优先使用 getent passwd
和 id
命令以保证兼容性。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/34151.html