You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术咨询:sudo whoami与sudo who am i的区别及结果差异原因

「sudo whoami」和「sudo who am i」的区别及结果差异原因

这两个命令看似长得像,实则在作用逻辑和sudo执行后的行为上有本质区别,我给你一步步拆解清楚:

1. 命令本身的定位差异

  • whoami:是一个极简的独立命令,唯一作用就是返回当前进程的有效用户ID(EUID)对应的用户名。它完全不关心会话的来源,只盯着运行它的进程是以哪个用户身份在干活。
  • who am i:这是who命令的特殊参数玩法。who本身是用来列出系统里所有活跃登录会话的工具,而am i(甚至可以换成mom likes,算是Unix圈的小彩蛋)是专门用来查询发起当前终端会话的原始用户,它会去读系统保存的登录会话记录(比如/var/run/utmp文件)来获取信息。

2. sudo执行后结果不同的核心原因

当你敲sudo的时候,它会以root权限创建一个新的子进程来运行后续命令,但这里有个关键差异:

  • 对于sudo whoami:whoami跑在sudo创建的root权限进程里,它读取的是这个进程的EUID(已经被sudo改成root了),所以自然返回root。
  • 对于sudo who am i:who am i根本不依赖当前进程的用户权限,它直接去查系统里存的登录会话记录——这个记录里存的是你最初打开终端时登录的用户,和sudo临时切换的权限半毛钱关系都没有,所以会返回你原本的登录用户名。

举个实际例子,假设你以alice用户登录系统:

  • 执行whoami → 返回alice
  • 执行sudo whoami → 返回root
  • 执行who am i → 返回alice(或者完整格式alice pts/0 2024-05-20 10:30)
  • 执行sudo who am i → 还是返回alice(会话的原始用户没变)

内容的提问来源于stack exchange,提问作者Macdonald

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 10:42:29