0

0

Linux如何查看系统中所有用户

P粉602998670

P粉602998670

发布时间:2025-09-09 09:02:01

|

482人浏览过

|

来源于php中文网

原创

最直接查看Linux所有用户的方法是运行cat /etc/passwd,该文件记录了每个用户账户的基本信息,每行代表一个用户,包含用户名、UID、GID、家目录和Shell等七项内容,其中密码字段以x代替,实际加密密码存于/etc/shadow。通过awk -F: '($3 >= 1000) && ($7 != "/sbin/nologin") && ($7 != "/bin/false") {print $1}' /etc/passwd可筛选出可登录的普通用户,排除系统账户。此外,getent passwd能从NIS、LDAP等源获取更完整的用户列表,cut -d: -f1 /etc/passwd仅提取用户名便于脚本处理,compgen -u列出Shell识别的所有用户,而id命令用于查看特定用户的UID、GID及所属组信息,适用于权限排查场景。

linux如何查看系统中所有用户

在Linux系统中,要查看所有用户,最直接和基础的方法就是查看

/etc/passwd
文件。这个文件包含了系统上所有用户账户的基本信息。

解决方案

要查看系统中所有用户,你只需在终端中运行以下命令:

cat /etc/passwd

这个命令会直接将

/etc/passwd
文件的内容输出到你的屏幕上。每一行代表一个用户账户,包含了用户名、用户ID、组ID、用户全名(或注释)、家目录以及默认的Shell等关键信息。

Linux如何查看系统中所有用户

/etc/passwd
文件:用户身份的“户口本”

说起Linux用户管理,

/etc/passwd
绝对是个绕不开的核心文件。我个人把它比作系统里所有用户的“户口本”,虽然现在很多信息都分散存储了,但最基础、最核心的身份信息,还得从这里找。你可能会好奇,为什么这个文件叫
passwd
,但里面并没有真正的密码?这其实是个历史遗留问题,也是系统安全演进的体现。早期的Unix系统确实把加密后的密码放在这里,但为了提高安全性,后来密码被移到了
/etc/shadow
文件中,而
passwd
文件中的密码字段则用一个
x
占位符替代了。

每一行都由冒号

:
分隔成七个字段,它们分别是:

  1. 用户名 (username): 登录时使用的名称。这是最直观的用户标识。
  2. 密码 (password): 现在通常是
    x
    ,表示密码存储在
    /etc/shadow
    文件中。
  3. 用户ID (UID): 用户的唯一标识符,一个数字。0通常是root用户,1-999通常是系统账户,1000及以上通常是普通用户(这个范围在不同发行版上可能略有差异)。
  4. 组ID (GID): 用户所属主组的ID。
  5. 用户全名或注释 (GECOS): 用户的描述信息,比如真实姓名、联系方式等。
  6. 家目录 (home directory): 用户登录后默认进入的目录。
  7. Shell (command shell): 用户登录后使用的默认命令行解释器,比如
    /bin/bash
    /bin/zsh
    等。如果这里是
    /sbin/nologin
    /bin/false
    ,通常意味着这个账户不能直接登录系统,多用于系统服务账户。

理解这些字段,你就能从原始数据中快速定位和分析用户账户的各种属性了。

Linux如何查看系统中所有用户

如何筛选出“活生生”的普通用户账户?

当我们查看

/etc/passwd
时,会发现除了我们平时登录的账户,还有一大堆系统账户,比如
daemon
bin
sys
等等。这些账户通常是为了运行特定的服务或程序而存在的,它们没有实际的登录需求。那么,如何才能筛选出那些我们真正关心的、可以登录的“活生生”的普通用户账户呢?

一个常用的方法是根据UID来判断。在大多数Linux发行版中,UID从1000开始的通常是普通用户。当然,这个阈值不是绝对的,有些系统可能会从500开始。同时,我们还要排除那些Shell设置为

/sbin/nologin
/bin/false
的账户,因为它们即便UID很高,也无法直接登录。

结合

awk
grep
,我们可以实现这样的筛选:

睿拓智能网站系统-网上商城
睿拓智能网站系统-网上商城

睿拓智能网站系统-网上商城1.0免费版软件大小:5M运行环境:asp+access本版本是永州睿拓信息专为电子商务入门级用户开发的网上电子商城系统,拥有产品发布,新闻发布,在线下单等全部功能,并且正式商用用户可在线提供多个模板更换,可实现一般网店交易所有功能,是中小企业和个人开展个人独立电子商务商城最佳的选择,以下为详细功能介绍:1.最新产品-提供最新产品发布管理修改,和最新产品订单查看2.推荐产

下载
# 筛选UID大于等于1000且Shell不是nologin/false的普通用户
awk -F: '($3 >= 1000) && ($7 != "/sbin/nologin") && ($7 != "/bin/false") {print $1}' /etc/passwd

# 或者,如果你只想看那些明确有登录Shell的账户
grep -v "/sbin/nologin" /etc/passwd | grep -v "/bin/false" | awk -F: '{print $1}'

第一条命令更精确地结合了UID和Shell的判断。第二条命令则更侧重于排除那些无法登录的账户,然后列出用户名。实际使用中,我更倾向于第一种,因为它能更准确地捕捉到“普通用户”这个概念。毕竟,有些系统账户的UID可能也会被调整到1000以上,但它们通常还是会配置成

nologin

Linux如何查看系统中所有用户

还有哪些“姿势”可以查看用户,以及它们各自的妙用?

除了直接

cat /etc/passwd
,Linux还提供了一些其他命令和方法来获取用户相关信息,它们各有侧重,能在不同场景下提供便利。

  1. getent passwd
    :更全面的用户信息获取
    getent
    命令是一个非常强大的工具,它不仅能从
    /etc/passwd
    文件获取信息,还能从其他配置源(如NIS、LDAP等)获取。这意味着,如果你的系统配置了集中式用户管理,
    getent passwd
    能为你提供一个更完整的用户列表,而不仅仅是本地文件中的用户。

    getent passwd

    输出格式与

    cat /etc/passwd
    类似,但其信息来源可能更广。

  2. cut -d: -f1 /etc/passwd
    :只获取用户名列表 如果你只是想快速获取一个纯粹的用户名列表,不关心其他字段,
    cut
    命令非常方便。它能根据指定的分隔符(
    -d:
    )提取指定字段(
    -f1
    ,即第一个字段)。

    cut -d: -f1 /etc/passwd

    这对于需要将用户名导入到脚本或进行其他批量操作时非常有用。

  3. compgen -u
    :列出当前Shell可识别的用户 这是一个Bash内置命令,通常用于Shell的自动补全功能。它能列出当前Shell环境下所有可用的用户名。虽然不直接读取
    /etc/passwd
    ,但它背后的机制也依赖于系统配置的用户信息。

    compgen -u

    这个列表通常会包含所有本地和可能通过NSS(Name Service Switch)配置的用户。

  4. id 
    :查看特定用户的详细信息 虽然不能列出所有用户,但
    id
    命令是查看单个用户(包括当前用户)UID、GID以及所属所有组信息的利器。当你对某个特定用户感兴趣时,它能提供非常详细的身份信息。

    id your_username

    了解这些不同的方法,可以让你在日常的系统管理中更加游刃有余。比如,排查用户权限问题时,

    id
    命令是首选;需要批量处理用户时,
    cut
    awk
    结合
    cat /etc/passwd
    会更高效;而在大型网络环境中,
    getent passwd
    则能帮你看到“全局”的用户视图。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

185

2023.09.27

switch语句用法
switch语句用法

switch语句用法:1、Switch语句只能用于整数类型,枚举类型和String类型,不能用于浮点数类型和布尔类型;2、每个case语句后面必须跟着一个break语句,以防止执行其他case的代码块,没有break语句,将会继续执行下一个case的代码块;3、可以在一个case语句中匹配多个值,使用逗号分隔;4、Switch语句中的default代码块是可选的等等。

534

2023.09.21

Java switch的用法
Java switch的用法

Java中的switch语句用于根据不同的条件执行不同的代码块。想了解更多switch的相关内容,可以阅读本专题下面的文章。

417

2024.03.13

mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

182

2023.12.04

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

282

2024.02.23

java标识符合集
java标识符合集

本专题整合了java标识符相关内容,想了解更多详细内容,请阅读下面的文章。

255

2025.06.11

c++标识符介绍
c++标识符介绍

本专题整合了c++标识符相关内容,阅读专题下面的文章了解更多详细内容。

121

2025.08.07

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

393

2023.07.18

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

6

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.6万人学习

Git 教程
Git 教程

共21课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号