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环境下启动SMB服务器的具体方法是什么?详细操作步骤和命令有哪些?

    在Linux系统中,SMB(Server Message Block)服务器通常通过Samba软件包实现,它允许Linux与Windows系统之间进行文件和打印共享,以下是详细启动SMB服务器的步骤,涵盖安装、配置、启动及测试全流程,安装Samba软件包首先根据Linux发行版选择对应的命令安装Samba,主流……

    2025年9月9日
    4400
  • 如何查看linux的jdk

    Linux中,可以通过命令 java -version 查看已安装的JDK版本,或

    2025年8月15日
    5100
  • Linux中如何创建软连接?

    在Linux系统中,软连接(符号链接)是一种特殊的文件类型,它类似于Windows系统中的快捷方式,指向另一个文件或目录的路径,软连接可以独立于源文件存在,即使源文件被移动或删除,软连接本身仍存在(但会失效),创建软连接的主要目的是方便访问、节省存储空间(特别是跨文件系统时)或管理分散的文件,本文将详细介绍在L……

    2025年10月4日
    3600
  • 电脑无光驱的情况下,该如何详细安装Linux系统呢?

    在无光驱的电脑上安装Linux系统已成为当前主流需求,尤其是超薄笔记本、平板电脑等设备普遍取消光驱设计的背景下,其实无光驱安装Linux的方案非常成熟,核心思路是通过其他存储介质(如U盘、移动硬盘)或网络引导来替代传统光盘启动,其中U盘启动法因操作简单、兼容性强成为普通用户的首选,以下是具体方法、步骤及注意事项……

    2025年8月21日
    5800
  • linux如何登录root用户

    Linux 中,可通过输入 su 或 sudo -i 命令,然后

    2025年8月14日
    5700

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信