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

Linux查看用户列表方法

在Linux中查询所有用户,可通过以下方法:,1. 查看 /etc/passwd 文件: cat /etc/passwdcut -d: -f1 /etc/passwd,2. 使用 getent 命令: getent passwd,3. 列出登录用户: userswho,这些命令显示系统账户和普通用户,需注意部分为服务账户。

在Linux系统中,查询所有用户是系统管理的基础操作,常用于账户管理、权限审计或安全排查,以下是几种高效可靠的方法,均基于Linux官方文档和行业标准实践(参考man passwdman getent):


核心方法详解

直接解析用户数据库文件

Linux本地用户信息存储在 /etc/passwd 文件中,每行代表一个用户,格式为:
用户名:密码占位符(x):UID:GID:描述信息:主目录:登录Shell
操作命令:

cat /etc/passwd  # 查看完整信息
cut -d: -f1 /etc/passwd  # 仅提取用户名列表

输出示例:

root
daemon
bin
...
your_username

使用 getent 命令(推荐)

此命令兼容本地账户及网络账户服务(如LDAP/NIS),确保查询完整性:

getent passwd  # 查询所有用户完整信息
getent passwd | cut -d: -f1  # 仅输出用户名

优势: 自动识别系统配置的用户源,避免遗漏网络账户。

Linux查看用户列表方法  第1张

利用 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的系统账户。


关键注意事项

  1. 权限要求
    普通用户可执行查询,但 /etc/passwd 默认全局可读(权限-rw-r--r--)。

  2. UID范围识别

    • 系统账户: UID范围 0~999(CentOS/RHEL)或 0~499(Debian/Ubuntu)
    • 普通用户: UID ≥1000
      查看命令:

      awk -F: '$3 >= 1000 {print $1}' /etc/passwd  # 仅显示普通用户
  3. 伪用户与无效账户
    部分服务账户无主目录(如_aptsystemd-network),需结合业务判断是否需保留。


应用场景建议

  • 基础查询 → 使用 getent passwd | cut -d: -f1
  • 脚本处理 → 用 awk 按条件过滤
  • 用户有效性检查 → 结合 grep 排除非登录账户
  • 审计合规 → 导出到文件: getent passwd > all_users.txt

附:用户信息字段说明

nginx:x:101:101:nginx user:/nonexistent:/usr/sbin/nologin 为例:

  1. nginx – 用户名
  2. x – 密码占位符(实际密码在/etc/shadow
  3. 101 – 用户ID (UID)
  4. 101 – 组ID (GID)
  5. nginx user – 描述信息
  6. /nonexistent – 主目录路径
  7. /usr/sbin/nologin – 登录Shell(禁止登录)

引用说明: 本文内容基于Linux核心文档(man 5 passwd)、Filesystem Hierarchy Standard及SysAdmin最佳实践,命令兼容主流发行版(Ubuntu/CentOS/Debian等)。

0