Linux查看用户命令

在Linux中查看用户信息主要有以下方法:使用cat /etc/passwd查看所有本地账户;通过getent passwd查询包括LDAP等的用户;执行id [用户名]验证特定用户存在性及所属组;compgen -u列出所有用户名。

了解谁在使用您的 Linux 系统:查询用户信息的全面指南

Linux查看用户命令

在 Linux 系统管理中,无论是排查问题、审核安全、分配资源还是进行日常维护,查询用户信息都是一项基础且至关重要的任务,Linux 提供了多种强大而灵活的命令和文件来帮助您获取所需的用户信息,本文将系统地介绍最常用、最可靠的方法。

核心命令:快速获取当前和登录用户信息

  1. who 命令:查看当前登录用户

    • 功能: 这是最直接的方式,显示当前有哪些用户登录到了系统,以及他们登录的时间、终端和来源(如果来自远程连接)。
    • 用法: 直接在终端输入 who
    • 输出示例:
      user1    tty1         2025-10-27 09:30
      user2    pts/0        2025-10-27 10:15 (192.168.1.100)
    • 解读:
      • user1, user2: 登录的用户名。
      • tty1: 表示用户 user1 在本地控制台 1 登录。
      • pts/0: 表示用户 user2 通过伪终端登录(通常是 SSH 远程连接)。
      • 2025-10-27 09:30: 登录时间。
      • (192.168.1.100): 远程登录用户的源 IP 地址。
    • 常用选项:
      • who -b: 显示系统最后一次启动(引导)的时间。
      • who -r: 显示当前的运行级别。
  2. w 命令:增强版登录用户信息

    Linux查看用户命令

    • 功能: w 命令在 who 的基础上提供了更丰富的信息,包括用户正在运行的进程、系统负载、登录时长以及 CPU 占用情况。
    • 用法: 直接在终端输入 w
    • 输出示例:
       10:25:03 up  1:05,  2 users,  load average: 0.00, 0.01, 0.05
      USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
      user1    tty1     -                09:30    1:05m  0.10s  0.10s -bash
      user2    pts/0    192.168.1.100    10:15    5.00s  0.05s  0.01s w
    • 解读:
      • 第一行:当前时间、系统已运行时间 (up 1:05)、登录用户数、系统负载(1分钟、5分钟、15分钟平均值)。
      • USER: 用户名。
      • TTY: 登录终端。
      • FROM: 来源 IP (远程登录) 或 (本地登录)。
      • LOGIN@: 登录时间。
      • IDLE: 用户空闲时间(无键盘/鼠标操作)。
      • JCPU: 该终端所有进程占用的 CPU 时间。
      • PCPU: 当前进程占用的 CPU 时间。
      • WHAT: 用户当前正在运行的命令(如 -bash 表示 shell,w 表示正在运行 w 命令本身)。
    • 优势: 快速了解用户活动状态和系统负载。
  3. id 命令:查询用户身份信息

    • 功能: 显示指定用户(或当前用户)的用户 ID (UID)、主组 ID (GID) 以及所属的所有附加组 (groups)。
    • 用法:
      • id: 显示当前用户的信息。
      • id username: 显示指定用户 username 的信息。
    • 输出示例:
      $ id user1
      uid=1001(user1) gid=1001(user1) groups=1001(user1),10(wheel),100(developers)
    • 解读:
      • uid=1001(user1): 用户 user1 的 UID 是 1001。
      • gid=1001(user1): 用户 user1 的主组 GID 是 1001,组名也是 user1 (通常与用户名相同)。
      • groups=...: 用户 user1 还属于 wheel (GID 10) 和 developers (GID 100) 组。权限管理的关键在于用户所属的组!
    • 常用选项:
      • id -u username: 仅显示用户的 UID。
      • id -g username: 仅显示用户的主组 GID。
      • id -G username: 仅显示用户所属的所有组的 GID。
      • id -Gn username: 仅显示用户所属的所有组的组名。

深入用户数据库:查询 /etc/passwd 文件

  • 功能: /etc/passwd 文件是 Linux 系统存储所有用户账户核心信息的数据库(密码本身存储在 /etc/shadow 中),它包含了系统上每个用户的基本配置。
  • 查看方法:
    • cat /etc/passwd: 直接显示所有用户条目。
    • less /etc/passwdmore /etc/passwd: 分页查看,更友好。
    • grep 'username' /etc/passwd: 精确查找特定用户 username 的信息。
  • 条目结构 (每行一个用户,由冒号 分隔为 7 个字段):
    username:x:UID:GID:GECOS:home_directory:login_shell
    • username: 用户登录名。
    • x: 历史遗留字段,表示用户密码已加密并存储在 /etc/shadow 文件中(x 是占位符)。
    • UID: 用户 ID。关键标识符! 系统内部使用 UID 识别用户。
      • 0: 超级用户 root
      • 1-999: 系统用户/服务账户 (通常保留给系统进程使用)。
      • 1000+: 普通用户 (起始 UID 可在 /etc/login.defs 中配置)。
    • GID: 用户的主组 ID,该组在用户创建文件时作为文件的默认属组。
    • GECOSComment: 用户全名或描述信息(可选字段),管理员常在此填写用户真实姓名或部门。
    • home_directory: 用户的主目录绝对路径 (如 /home/user1)。
    • login_shell: 用户登录后默认启动的 shell (如 /bin/bash),如果设置为 /sbin/nologin/bin/false,则该用户通常不能用于交互式登录(常用于服务账户)。
  • 重要性: 这是查询系统上所有用户(包括系统用户和普通用户)最全面的方式,提供了 UID、GID、主目录和默认 shell 等核心元数据。

查询用户登录历史:last 命令

  • 功能: 查询 /var/log/wtmp 文件(记录成功登录和注销的历史),显示用户的登录历史记录(包括登录、注销时间、终端、来源 IP 以及持续时间),对于审计和安全调查非常有用。
  • 用法:
    • last: 显示所有用户的登录历史(按时间倒序排列,最近的在最前面)。
    • last username: 仅显示指定用户 username 的登录历史。
  • 输出示例:
    user2    pts/0        192.168.1.100  Fri Oct 27 10:15   still logged in
    user1    tty1                       Fri Oct 27 09:30 - 10:20  (00:50)
    reboot   system boot  5.4.0-135-gene Fri Oct 27 09:28   still running
    ...
    • still logged in: 用户当前仍在登录状态。
    • (00:50): 该次登录会话的持续时间(50分钟)。
    • reboot: 显示系统重启事件。
  • 相关命令:
    • lastb: 查询 /var/log/btmp 文件,显示失败的登录尝试记录(需要 root 权限),是重要的安全审计工具。

查询用户所属组:groups 命令

  • 功能: 快速查看指定用户(或当前用户)属于哪些组。
  • 用法:
    • groups: 显示当前用户所属的组。
    • groups username: 显示指定用户 username 所属的组。
  • 输出示例:
    $ groups user1
    user1 : user1 wheel developers
    • 用户 user1 属于 user1 (主组)、wheeldevelopers 组,这与 id -Gn user1 的输出核心信息一致。

查找正在运行进程的用户:ps 命令

  • 功能: 虽然 ps 主要用于查看进程,但它也是识别哪个用户正在运行特定进程的关键工具。
  • 用法:
    • ps aux: 查看系统上所有用户运行的所有进程的详细信息(BSD 风格)。
    • ps -ef: 查看系统上所有用户运行的所有进程的详细信息(标准 UNIX/SysV 风格)。
    • ps -u username: 查看指定用户 username 运行的所有进程。
  • 输出解读 (ps aux 示例列):
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.1 169048 13120 ?        Ss   09:28   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 31
    user1     1234  0.0  0.5 251212 51244 tty1     Sl+  09:30   0:00 /usr/bin/firefox
    ...
    • USER 列: 明确显示了运行该进程的用户名(如 root, user1)。

重要提示与最佳实践

  1. 权限要求:
    • 查看 /etc/passwd/etc/shadow (需要 root)、/etc/group 等系统文件,以及使用 lastb 或查看某些日志,通常需要 root 权限或使用 sudo
    • 命令如 who, w, id (查看自己或他人公开信息), last (查看公开登录历史) 通常普通用户也可执行。
  2. 安全操作:
    • 永远不要直接编辑 /etc/passwd/etc/shadow 文件! 使用专门的命令修改用户属性(如 usermod, useradd, userdel, passwd),直接编辑极易出错导致系统无法登录。
    • 定期审查用户列表 (/etc/passwd) 和登录历史 (last, lastb),删除或禁用不再需要的账户 (usermod -L usernamepasswd -l username),是重要的安全措施。
  3. 理解 UID/GID: 系统通过 UID 和 GID 识别用户和组,而非用户名,理解这一点对权限管理和问题诊断至关重要。
  4. 组合使用: 实际工作中,经常需要组合使用这些命令,用 w 看到异常活跃用户,用 id 查其组权限,用 ps 看其在运行什么,用 last 查其登录历史。

掌握这些查询用户的方法 (who, w, id, last, groups, ps, 查看 /etc/passwd) 是 Linux 系统管理员的必备技能,它们不仅能帮助您了解系统状态、管理用户账户和权限,更是进行系统监控、故障排除和安全审计的基石,始终牢记安全操作规范,优先使用专用命令而非直接修改关键系统文件。


引用说明:

Linux查看用户命令

  • 基于 Linux 核心工具(如 coreutils, util-linux, shadow-utils 软件包)的标准手册页 (man pages),可通过 man who, man w, man id, man passwd, man last, man groups, man ps 等命令获取最权威、最详细的技术参数和说明。
  • 用户和组管理的概念及文件格式 (/etc/passwd, /etc/shadow, /etc/group) 遵循 Linux 标准基础 (LSB) 和 POSIX 规范。
  • 安全最佳实践参考了诸如 Linux 基金会、SANS Institute 和主要 Linux 发行商 (Red Hat, Canonical, SUSE) 发布的系统管理指南和安全加固建议。

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

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月26日 12:39
下一篇 2025年6月26日 12:50

相关推荐

  • Linux抓取SIP数据包方法

    在Linux中抓取SIP流量可使用tcpdump命令,指定网卡和端口5060进行捕获: ,“bash,tcpdump -i eth0 -s0 -w sip_capture.pcap port 5060,` ,或使用专用工具sngrep实时解析SIP消息: ,`bash,sngrep -d eth0,“ ,两者均可保存为pcap文件供Wireshark分析。

    2025年6月23日
    000
  • 如何打开Linux gz文件

    在Linux中,.gz文件是gzip压缩文件,使用gzip -d filename.gz解压缩,或zcat filename.gz直接查看内容,确保已安装gzip工具。

    2025年6月10日
    200
  • Linux磁盘挂载快速指南

    Linux磁盘挂载步骤:创建挂载点目录(如/mnt/data),格式化磁盘(可选),使用mount命令临时挂载,如需开机自动挂载,需编辑/etc/fstab文件添加磁盘UUID和挂载点信息,注意权限管理。

    2025年6月25日
    000
  • Linux如何卸载Apache

    在 Linux 中卸载 Apache 的步骤:,1. **停止服务:** sudo systemctl stop apache2 (Debian/Ubuntu) 或 sudo systemctl stop httpd (CentOS/RHEL)。,2. **卸载软件包:**, * Debian/Ubuntu:sudo apt remove apache2, * CentOS/RHEL:sudo yum remove httpd 或 sudo dnf remove httpd,3. **(可选) 清理配置:** Debian/Ubuntu 可加 –purge 选项 (sudo apt purge apache2) 删除配置文件。,4. **(可选) 清理依赖:** 运行 sudo apt autoremove (Debian/Ubuntu) 或 sudo yum autoremove (CentOS/RHEL) 移除不再需要的依赖包。

    2025年6月20日
    000
  • Linux热键怎么查

    查看Linux热键主要有三种方法:,1. 打开系统设置中的“键盘”或“快捷键”选项,直接查看或自定义图形界面下的热键。,2. 在终端使用 man 命令查询特定程序的手册(如 man bash 查找Bash shell快捷键)。,3. 查阅所用桌面环境(如GNOME、KDE)或窗口管理器(如i3)的官方文档获取默认快捷键列表。

    2025年6月27日
    000

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN