当前位置:首页 > Linux > 正文

Linux怎么查系统用户列表

在Linux中查看所有用户,可通过以下命令:,1. 查看 /etc/passwd 文件: cat /etc/passwd(包含系统用户),2. 使用 getent passwd 命令获取用户数据库信息,3. 提取用户名: cut -d: -f1 /etc/passwdgetent 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列)

Linux怎么查系统用户列表  第1张

  1. 用户名(如 ubuntu
  2. 密码占位符x 表示密码存储在 /etc/shadow
  3. 用户ID(UID)
    • 0:root用户
    • 1-999:系统服务账户
    • 1000+:普通用户
  4. 组ID(GID)
  5. 用户描述(如全名或备注)
  6. 家目录路径
  7. 默认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) 可定制输出

安全注意事项

  1. 敏感文件权限
    • /etc/passwd 应全局可读(权限 -rw-r--r--
    • /etc/shadow 仅root可读(权限 -rw-------),存储加密密码。
  2. 审计建议
    • 定期检查UID=0的非root账户
    • 确认无效账户(如 nologin Shell)是否应存在
  3. 避免误操作
    • 修改用户数据前备份配置文件
    • 使用 vipw 命令安全编辑用户文件

权威引用说明

本文方法基于:

  1. Linux man-pages项目man 5 passwd
  2. Ubuntu官方文档:用户管理指南
  3. Red Hat Enterprise Linux安全手册(最小权限原则)
  4. IEEE标准:POSIX.1-2017getent 命令规范)

ℹ️ 所有命令均在 bash 环境下测试通过,兼容主流发行版(Ubuntu 22.04/CentOS 7+)。

通过以上方法,您可全面掌握Linux用户查看技术,为系统管理或安全审计提供可靠依据,实际应用中,建议优先使用 getent passwdid 命令以保证兼容性。

0