Linux中如何查看系统用户信息?

在Linux操作系统中,用户管理是系统运维的基础操作之一,查看用户信息可以帮助管理员了解系统中的用户账户、登录状态、权限分配等情况,本文将详细介绍Linux中查看用户的多种方法,涵盖命令行工具、配置文件解析以及高级过滤技巧,并结合实际示例说明各命令的使用场景和输出含义。

在linux中如何查看用户

查看当前登录用户

当前登录用户是指正在与系统交互的用户,这类信息可通过简单命令快速获取,适用于确认当前操作身份或排查多用户登录问题。

  1. whoami命令
    whoami是最基础的查看当前用户命令,直接返回当前有效用户的用户名,无需任何选项。
    示例

    whoami

    输出:若当前用户为root,则直接显示root;若为普通用户test,则显示test,该命令不依赖任何文件或数据库,直接读取当前进程的用户信息,适合快速确认身份。

  2. who命令
    who命令用于显示当前所有登录系统的用户信息,包括用户名、终端设备、登录时间和远程IP地址(如果是远程登录)。
    常用选项

    • -u:显示用户的 idle 时间(空闲时长);
    • q:仅显示用户名和登录数量,简化输出。
      示例

      who

      输出

      root     pts/0        2023-10-01 10:00 (192.168.1.100)
      test     pts/1        2023-10-01 11:30 (192.168.1.101)  

      其中pts/0pts/1表示虚拟终端,括号内为远程登录IP,若为本地登录则显示console

  3. w命令
    w命令是who的增强版,不仅显示登录用户信息,还额外展示每个用户执行的进程和系统负载情况。
    常用选项

    • -h:不显示输出顶部的标题行(如系统时间、负载等);
      -s:省略终端信息,仅显示用户名、终端、登录时间和进程数。
      示例

      w

      输出

      10:30:01 up 10 days,  2:30,  2 users,  load average: 0.05, 0.01, 0.00
      USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
      root     pts/0    192.168.1.100    10:00    5:00   0.02s  0.01s -bash
      test     pts/1    192.168.1.101    11:30    1:00   0.01s  0.01s vim

      IDLE列表示用户空闲时长,WHAT列显示当前运行的进程(如vim)。

  4. users命令
    users命令以简洁格式显示当前所有登录用户,重复用户名仅显示一次(若用户通过多个终端登录)。
    示例

    users

    输出

    root test

    若用户test通过两个终端登录,输出为test test,适合快速统计在线用户数量。

查看系统所有用户

Linux系统中的用户信息存储在/etc/passwd文件中,该文件是用户账户的核心配置文件,记录了每个用户的基本属性。

  1. /etc/passwd文件结构
    文件每行代表一个用户,字段通过分隔,格式为:
    用户名:密码占位符:UID:GID:描述信息:家目录:登录Shell

    在linux中如何查看用户

    • 用户名:登录时使用的唯一标识;
    • 密码占位符:实际密码存储在/etc/shadow中,此处显示为x
    • UID:用户唯一标识,0为root,1-999为系统用户,1000+为普通用户;
    • GID:主组ID,对应/etc/group中的组;
    • 描述信息:用户全名或备注,可为空;
    • 家目录:用户登录后的默认工作目录;
    • **登录Shell用户登录后执行的程序,如/bin/bash(可交互登录),/sbin/nologin`(禁止登录)。
  2. 查看/etc/passwd文件

    • cat命令:直接显示文件全部内容,适合用户数量较少的系统。
      cat /etc/passwd
    • less命令:分页显示,适合用户数量较多的系统,支持上下翻页搜索。
      less /etc/passwd
    • awk命令:提取特定字段,如仅查看用户名和UID。
      awk -F: '{print $1, $3}' /etc/passwd

      输出

      root 0
      daemon 1
      bin 2
      test 1000
    • cut命令:按字符或字段切割,类似awk但更简单。
      cut -d: -f1,6 /etc/passwd

      输出

      root /root
      daemon /usr/sbin
      bin /bin
      test /home/test

查看用户详细信息

除了用户名和UID,有时需要了解用户的UID、GID、所属组、家目录等详细信息,可通过以下命令实现。

  1. id命令
    id命令用于显示用户的UID、GID及所属组信息,支持查看当前用户或其他指定用户。
    常用选项

    • -u:仅显示UID;
    • -g:仅显示主组GID;
    • -G:显示所有附加组的GID;
    • -n:显示名称而非数字(需配合-u/-g/-G)。
      示例

      id test

      输出

      uid=1000(test) gid=1000(test) groups=1000(test),27(sudo)

      表示用户test的UID为1000,主组为test(GID 1000),附加组为sudo(GID 27)。

  2. finger命令
    finger命令可显示用户的详细信息,如登录名、全名、目录、Shell及最近登录时间,但部分系统默认未安装,需通过sudo apt install finger(Ubuntu/Debian)或sudo yum install finger(CentOS/RHEL)安装。
    示例

    finger test

    输出

    Login: test           Name: Test User  
    Directory: /home/test  Shell: /bin/bash  
    Last login Fri Oct  1 11:30:00 2023 from 192.168.1.101  
    No mail.  
    No Plan.

查看用户登录历史

为排查安全异常或审计用户行为,可查看历史登录记录,包括成功和失败的登录信息。

  1. last命令
    last命令读取/var/log/wtmp文件(记录所有登录和关机事件),显示用户最近的登录时间、终端来源、IP地址和停留时长。
    常用选项

    • -n:显示最近n条记录,如last -n 10显示最近10条;
    • -i:显示IP地址而非主机名;
    • -x:显示关机、重启等事件。
      示例

      last -n 5

      输出

      test   pts/1        192.168.1.101   Fri Oct  1 11:30   still logged in
      root   pts/0        192.168.1.100   Fri Oct  1 10:00   - 10:30  (00:30)
      reboot   system boot  5.4.0-91-generic Fri Oct  1 10:00   - 11:30 (01:30)
  2. lastb命令
    lastb命令读取/var/log/btmp文件(记录失败登录尝试),用于排查暴力破解等安全风险。
    示例

    lastb -n 3

    输出

    在linux中如何查看用户

    invalid user admin  ssh:n=2 Fri Oct  1 09:55 192.168.1.50
    invalid user root   ssh:n=1 Fri Oct  1 09:50 192.168.1.50

查看用户组信息

Linux用户与组关联,通过/etc/group文件或groups命令可查看用户所属组信息。

  1. /etc/group文件
    文件格式为组名:密码占位符:GID:组成员,每行代表一个组,查看方式与/etc/passwd类似,

    grep 'test' /etc/group

    输出

    test:x:1000:test
    sudo:x:27:test,user1

    表示组test的GID为1000,成员为test;组sudo的成员包含testuser1

  2. groups命令
    groups命令显示当前用户或指定用户的所有所属组,与id -G类似但更简洁。
    示例

    groups test

    输出

    test : test sudo

结合数据库查看用户

部分系统使用LDAP或NIS等集中式用户管理,此时/etc/passwd可能不包含所有用户,需通过getent命令查询用户数据库。

  1. getent命令
    getent从系统配置的数据库(如/etc/passwd、LDAP等)中查询条目,语法为getent 数据库名 条目名
    示例

    getent passwd | grep 'test'

    输出

    test:x:1000:1000:Test User:/home/test:/bin/bash

    若用户来自LDAP数据库,getent仍可正常查询,适合企业级多服务器环境。

常用命令对比表

命令名称 主要功能 常用选项 使用示例
whoami 显示当前有效用户名 whoami
who 显示当前登录用户信息 -u(显示状态), -q(显示用户数) who -u
w 显示用户登录状态及进程 -h(不显示标题) w -h
users 显示所有登录用户列表 users
cat /etc/passwd 查看系统所有用户信息 cat /etc/passwd
awk -F: '{print $1}' /etc/passwd 提取所有用户名 -F:(指定分隔符) awk -F: '{print $1}' /etc/passwd
id 显示用户UID、GID及所属组 -u(显示UID), -G(显示所有组) id -G test
last 显示用户登录历史记录 -n(显示条数) last -n 10
getent passwd 从数据库获取用户信息 getent passwd | grep test

相关问答FAQs

问题1:如何快速判断系统中是否存在某个特定用户?
解答:可通过以下两种方式快速判断:

  1. 使用id命令,若用户存在则显示其UID和组信息,否则提示“no such user”。
    id username  # 存在则显示信息,不存在则报错
  2. 使用grep过滤/etc/passwd文件,若用户存在则匹配到对应行:
    grep '^username:' /etc/passwd  # 有输出则存在,无输出则不存在

问题2:为什么有些用户在/etc/passwd中存在但无法直接登录系统?
解答:这类用户通常是系统服务或程序专用用户,无法直接登录的原因主要有两点:

  1. Shell字段限制:用户的登录Shell被设置为/sbin/nologin/bin/false,明确禁止交互式登录。
    grep 'nobody' /etc/passwd  # 输出可能为:nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
  2. 密码字段锁定:用户密码字段为或(而非x),表示密码被锁定,即使知道用户名也无法通过密码验证。
    grep 'sync' /etc/passwd  # 输出:sync:x:4:65534:sync:/bin:/bin/sync (密码字段为空,禁止登录)

    这类用户通常用于运行系统进程(如nobody用于服务降权),无需交互登录,属于正常设计。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/35915.html

(0)
酷番叔酷番叔
上一篇 2025年10月4日 19:32
下一篇 2025年10月4日 19:50

相关推荐

  • Linux中如何释放被占用的pts端口资源?

    在Linux系统中,PTS(伪终端从设备)是终端会话的重要组成,通常用于模拟终端连接,如SSH远程登录、本地终端模拟器或tmux/screen等会话管理工具,当PTS端口被异常占用(如进程未正确退出、连接断开残留等),可能导致系统资源浪费或新终端会话无法创建,本文将详细说明如何查看、定位并释放PTS端口,确保终……

    2025年10月8日
    1000
  • Linux如何查看磁盘接口类型?

    在Linux系统中,磁盘接口类型的识别对于硬件维护、性能优化及驱动配置至关重要,常见的磁盘接口类型包括SATA、NVMe、SCSI、SAS及USB等,不同接口在传输速率、协议规范和物理形态上存在差异,以下将详细介绍多种查看磁盘接口类型的方法,涵盖基础命令到专业工具,并通过表格对比各工具的适用场景,使用lsblk……

    2025年9月10日
    2200
  • 如何选装Linux系统不踩坑?

    Linux作为开源、稳定且高度可定制的操作系统,是开发者的首选平台之一,无论是Web开发、系统编程还是人工智能领域,Linux都提供了强大的工具链和开发环境,本文将详细指导你从零开始搭建Linux开发环境,涵盖工具选择、环境配置及最佳实践,帮助开发者高效工作,发行版选择初学者推荐:Ubuntu(用户友好,社区支……

    2025年6月18日
    6000
  • Linux系统如何安装配置OpenCV并实现基础图像处理操作?

    在Linux系统中使用OpenCV是进行计算机视觉和图像处理的常见需求,OpenCV(Open Source Computer Vision Library)提供了丰富的函数库,支持C++、Python等多种编程语言,本文将从安装、配置、基本使用到高级应用,详细说明Linux环境下OpenCV的使用方法,安装O……

    2025年8月25日
    3100
  • Linux下如何修改或升级NASM版本?

    在Linux系统中,NASM(Netwide Assembler)是广泛使用的汇编器,尤其在系统级编程、逆向工程和底层开发中扮演重要角色,随着项目需求的变化,可能需要升级或降级NASM版本以支持新的指令集、语法特性或修复兼容性问题,本文将详细介绍在Linux环境下修改NASM版本的完整流程,包括版本查询、旧版本……

    2025年9月28日
    1700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信