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 如何启动zk

    Linux 上启动 ZooKeeper,通常使用命令 zkServer.sh start。

    2025年8月13日
    12800
  • Python中如何用Linux信号量实现进程同步?

    Linux信号量是一种进程间同步机制,用于协调多个进程对共享资源的访问,通过P(wait,资源申请)和V(signal,资源释放)操作控制并发数量,避免竞争条件,在Python中,可通过高级接口multiprocessing.Semaphore和低级接口os模块的信号量系统调用来实现信号量的功能,Python中……

    2025年8月24日
    20000
  • Linux改IP地址详细教程

    要临时更改 Linux IP 地址,使用 ip addr 或 ifconfig 命令(需 root 权限),永久修改需编辑网络配置文件(如 /etc/network/interfaces 或 /etc/sysconfig/network-scripts/ 下的文件),然后重启网络服务。

    2025年8月4日
    18100
  • Windows如何使用Linux命令?实用操作方法有哪些?

    在Windows操作系统下使用Linux命令,已成为许多开发者和运维人员的日常需求,尤其是在跨平台开发、服务器管理或脚本编写场景中,Windows本身对Linux命令的支持逐步增强,用户可通过多种方式实现这一目标,以下是几种主流方法的详细介绍,Windows Subsystem for Linux(WSL)WS……

    2025年9月25日
    14700
  • Linux如何建立域名?详细配置与解析步骤解析

    在Linux系统中建立域名通常涉及两种常见场景:本地静态域名解析(通过hosts文件)或搭建本地DNS服务器(如BIND9)提供动态域名解析服务,前者适用于小范围、固定的域名映射,后者则适合局域网或需要提供域名解析服务的场景,以下是具体操作步骤和说明,通过hosts文件实现本地域名解析hosts文件是Linux……

    2025年10月1日
    13500

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信