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

相关推荐

  • 如何正确使用 sudo 命令?

    在Linux系统中,root用户拥有最高权限,可执行所有操作(包括修改系统文件、安装软件等),但滥用root权限可能导致系统崩溃或安全风险,因此需谨慎操作,以下是几种以root身份执行命令的方法,每种方法均附使用场景和注意事项:sudo(Super User Do)允许授权用户临时以root权限执行命令,无需切……

    2025年6月13日
    9300
  • 腾讯云linux如何登陆

    腾讯云Linux服务器的登录是运维和管理的基础操作,根据使用场景和安全性需求,用户可选择多种登录方式,包括Web控制台VNC登录、SSH密钥登录、密码登录及第三方工具登录等,以下是各种方式的详细操作步骤和注意事项,帮助用户高效、安全地完成登录,准备工作:登录前的必要检查无论采用哪种登录方式,需确保以下条件满足……

    2025年10月4日
    5900
  • 关闭防火墙会怎样?

    在Linux系统中,防火墙是保护系统安全的关键组件,关闭防火墙可能使系统暴露于网络攻击中,仅建议在测试环境、隔离网络或明确知晓风险的情况下操作,以下分发行版和防火墙类型详细说明关闭方法:关闭前的准备备份防火墙规则(避免误操作无法恢复):sudo iptables-save > ~/iptables_bac……

    2025年7月24日
    9600
  • Linux后台命令状态如何监控?

    为什么需要查看后台命令?实时监控:确保任务按预期执行(如备份脚本、服务进程),故障排查:捕获错误日志(如Python脚本崩溃),资源管理:避免僵尸进程占用CPU/内存,4种核心查看方法jobs 命令(当前终端有效)适用场景:临时任务(如 python3 script.py &),操作:jobs -l……

    2025年7月31日
    10200
  • Linux系统下鼠标如何正确操作使用?

    Linux 系统作为开源操作系统的代表,其图形界面的发展使得鼠标操作成为日常使用的重要交互方式,从早期的 X Window 系统到现代成熟的桌面环境,Linux 对鼠标的支持已非常完善,无论是基础操作还是高级配置,用户都能通过多种方式实现个性化控制,本文将详细介绍 Linux 系统中使用鼠标的基础操作、配置方法……

    2025年8月28日
    9000

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信