服务器测评网
我们一直在努力

Linux查看用户命令有哪些?Linux如何查看系统所有用户

在Linux系统运维与安全管理中,用户信息的查看是日常最高频的操作之一,无论是排查权限问题、审计登录行为,还是管理系统资源,管理员都需要依赖一套精准且高效的命令工具链。在Linux中查看用户信息主要分为三个维度:查看当前会话身份、查看系统登录用户、以及查看系统中存在的所有用户账户。 核心命令包括 whoamiidwhow 以及对 /etc/passwd 文件的读取,掌握这些命令及其组合使用,能够帮助管理员快速定位用户状态、UID/GID归属以及活动会话,从而保障系统的安全性与稳定性。

Linux查看用户命令有哪些?Linux如何查看系统所有用户

查看当前登录用户身份

在执行需要特定权限的操作前,确认当前会话的登录身份是首要步骤,这一维度的查看主要关注“我是谁”以及“我拥有哪些权限”。

whoami 命令
这是最基础、最直接的命令,用于显示当前有效的用户账号。

  • 核心功能:输出当前登录的用户名。
  • 使用场景:在脚本编写或频繁切换用户(su/sudo)后,快速确认当前上下文环境。
  • 输出示例:执行 whoami 后,系统直接返回 rootwww-data 等用户名,无多余信息,适合脚本捕获。

id 命令
相比于 whoamiid 命令提供了更具深度的身份信息,是专业运维的首选。

  • 核心功能:显示当前用户的真实UID(用户ID)、有效UID、GID(组ID)以及所属的附属组列表。
  • 专业见解:在排查“Permission Denied”错误时,id 命令至关重要,很多时候文件权限依赖于组权限(如775或664),仅知道用户名是不够的,必须确认用户是否隶属于特定的组。
  • 常用参数id -u 仅显示UID;id -g 仅显示GID;id -un 显示用户名,这些参数在编写Shell脚本进行逻辑判断时非常实用。

查看当前在线登录用户

系统管理员需要实时监控谁正在登录服务器,以及他们在做什么,这对于安全审计和资源调度非常关键。

who 命令
who 命令用于显示当前登录到系统的所有用户信息。

Linux查看用户命令有哪些?Linux如何查看系统所有用户

  • 核心功能:列出登录用户的用户名、登录终端(TTY/PTS)、登录时间以及远程主机IP。
  • 数据解读:输出中的 pts/0pts/1 代表伪终端,通常是SSH远程连接;而 tty1 代表本地控制台,通过查看远程主机IP,管理员可以识别出异常的异地登录行为。

w 命令
w 命令是 who 命令的增强版,它不仅显示谁在登录,还显示他们在做什么。

  • 核心功能:显示登录用户、登录时间、空闲时间(IDLE)、JCPU(终端占用的CPU时间)、PCPU(当前进程占用的CPU时间)以及当前执行的命令。
  • 专业解决方案:当系统负载突然升高时,首先执行 w 命令,通过观察 PCPUFROM 字段,可以迅速定位是哪个IP的哪个用户在运行高消耗资源的命令(如tar打包、find查找等),从而决定是否与其沟通或终止进程。

查看系统所有存在的用户

除了在线用户,管理员还需要掌握系统中注册了哪些用户,包括系统用户和普通用户,这是用户生命周期管理的基础。

查看 /etc/passwd 文件
Linux系统中,所有用户信息本质上都存储在 /etc/passwd 文本文件中。

  • 核心原理:该文件每一行代表一个用户,由冒号(:)分隔为七个字段:用户名:密码占位符:UID:GID:家目录:登录Shell
  • 操作方法:直接使用 cat /etc/passwd 可以查看所有用户,为了更直观地仅获取用户名列表,建议使用 cut 命令组合:cat /etc/passwd | cut -d: -f1
  • 专业见解:注意观察UID,通常UID小于1000的为系统用户(如bin, daemon, www-data),UID大于等于1000的为普通登录用户,在清理系统或审计时,应重点关注UID >= 1000的账户。

compgen 命令
这是一个鲜为人知但非常高效的Bash内置命令。

  • 核心功能compgen -u 可以直接列出系统中所有可用的用户名。
  • 优势:比解析 /etc/passwd 更简洁,输出结果仅为纯用户名列表,非常适合用于自动补全脚本或快速遍历用户账户。

高级审计与历史记录

为了满足E-E-A-T中的可信与安全原则,仅仅查看当前状态是不够的,还需要具备追溯历史的能力。

Linux查看用户命令有哪些?Linux如何查看系统所有用户

last 命令

  • 核心功能:读取 /var/log/wtmp 文件,显示用户的历史登录记录(包括重启记录)。
  • 安全价值:通过 last 可以查看某个用户过去的登录IP和时间点,如果发现 last 输出中有大量来自陌生IP的失败尝试(需结合 lastb 查看失败日志),则意味着服务器可能正在遭受暴力破解攻击。

检查特定用户是否存在
在编写自动化运维脚本时,往往需要先判断用户是否存在再执行操作。

  • 专业解决方案:不要使用 grep 去过滤 /etc/passwd,最专业的方法是使用 id 命令结合条件判断。if id "username" &>/dev/null; then echo "用户存在"; else echo "用户不存在"; fi,这种方式利用了系统自带的ID查询机制,效率最高且逻辑最严谨。

相关问答

问题1:如何快速查看Linux系统中有多少个用户账号?
解答: 可以使用组合命令 cat /etc/passwd | wc -l 来直接统计 /etc/passwd 文件的行数,因为每一行对应一个唯一的用户,如果需要区分普通用户和系统用户,可以结合 awk 命令过滤UID,例如统计普通用户(UID>=1000):awk -F: '$3 >= 1000 {print}' /etc/passwd | wc -l

问题2:w 命令和 who 命令在显示用户信息时有什么本质区别?
解答: who 命令侧重于静态的登录状态,主要提供用户名、终端、登录时间和来源IP,告诉你“谁在哪里登录了”;而 w 命令侧重于动态的执行状态,它在 who 的基础上增加了CPU使用时间、空闲时间和当前正在执行的命令,告诉你“谁正在做什么以及消耗了多少资源”,在排查系统负载高时,w 命令更有价值。
能帮助您全面掌握Linux用户查看的技巧,如果您在具体操作中遇到权限不足或命令输出异常的情况,欢迎在评论区留言,我们一起探讨解决方案。

赞(0)
未经允许不得转载:好主机测评网 » Linux查看用户命令有哪些?Linux如何查看系统所有用户