商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > Linux怎么查看所有用户的列表

Linux怎么查看所有用户的列表

  发布于2026-08-18 阅读(0)

扫一扫,手机访问

在Linux系统中查看所有用户需要分不同层次来处理。其中,“cut -d: -f1 /etc/passwd”命令只是机械地提取出全部用户名,这里面甚至包含了那些不可登录的账户;而“awk -F: '$3>=1000 && $7!~/(nologin|false)$/{print $1}'”命令则可以筛选出钱ID≥1000且shell有效的普通用户;“getent passwd”命令更为可靠,它能够兼容像LDAP等外部源。不过要注意,真正的人类用户还需要结合home目录的存在性以及密码未锁定状态进行交叉验证才行。

Linux怎么查看所有用户的列表

直接看 /etc/passwd 能列出所有已注册账户,但里面混着几十个系统服务账户(如 daemonsshdwww-data),不能当“可登录用户”用。真要查人用的账号,得筛 UID、shell、home 目录三样东西。

只提取用户名:cut 和 awk 都行,但字段别搞错

要说获取全部用户名最快的方法,那非 cut -d: -f1 /etc/passwd 莫属了,一行命令就能搞定,不过它会把像 nobodysync 这类根本无法登录的用户也一并吐出。因为它只是机械地提取第一列,并不会去判断其有效性。
awk -F: '{print $1}' /etc/passwd 这条命令的效果与之相同,但如果后续想要添加条件的话,它就更方便了,比如:
awk -F: '$3 >= 1000 && $7 !~ /(nologin|false)$/{print $1}' /etc/passwd ,使用这条命令就能轻松跳过低UID和禁用shell的账户。

  • $3 是 UID 字段,Ubuntu/Debian 普通用户从 1000 开始,RHEL/CentOS 是 500 或 1000,得按发行版调
  • $7 是 shell 字段,/sbin/nologin/bin/false 表示禁止交互登录,但有些系统用 /usr/sbin/nologin,正则得覆盖全
  • 别碰 $2(密码占位符),它全是 x,真实密码在 /etc/shadow,非 root 读不了

getent passwd 比直接读 /etc/passwd 更可靠

如果你的系统配了 LDAP 或 SSSD,cat /etc/passwd 只能看到本地账户,而 getent passwd 会合并所有 NSS 后端数据,返回完整视图。它不是“替代方案”,而是生产环境该用的标准方式。

  • getent passwd | cut -d: -f1 输出所有可解析用户,含域用户
  • getent passwd | awk -F: '$3 >= 1000 {print $1}' 筛普通用户,但注意:LDAP 用户 UID 可能远大于 65534,别硬加上限
  • 查单个用户是否存在,用 id username 比 grep /etc/passwd 准,它走的是 NSS 查询链

compgen -u 看起来快,但结果不准

compgen -u 是 Bash 内置命令,只输出当前 shell 的补全缓存里的用户名,依赖 /etc/passwd 但不实时刷新。新建用户后不重启 shell,它就看不见;删了用户,它可能还缓存着。

  • 适合快速检查当前环境认识哪些名字,别用于审计或脚本依赖
  • 它不查 /etc/shadow,也不管密码是否被锁(*!),更不理会 SSH 或 sudo 权限
  • 换 zsh 或 dash 就失效,纯 Bash 特性,跨 shell 不通用

真正“人类用户”还得看 home 目录和密码状态

UID ≥ 1000 + 有 bash/shell ≠ 真实用户。有人手动建低 UID 账户,或改了 shell 绕过筛选。最稳的方式是交叉验证:

  • ls -ld /home/* 2>/dev/null | awk '{print $3}' | sort -u 列出实际有 home 目录且属主有效的用户名
  • sudo getent shadow | awk -F: '$2 != "*" && $2 != "!" {print $1}' 查密码字段没被锁的用户(需 root 权限)
  • 这两条结果取交集,比单靠 /etc/passwd 字段靠谱得多
  • 注意 getent shadow 在启用了 LDAP 的机器上会返回域用户,结果可能远超预期

UID 范围、shell 类型、home 目录、密码状态这四层过滤缺一不可,漏掉任何一层都可能把服务账户当人用,或者把刚创建还没设密码的用户漏掉。

本文转载于:https://www.php.cn/faq/3005195.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注