命令是干什么的
whoami 回答“当前这个进程以什么身份在跑”:返回账号名、SID、所属组与令牌特权。排查权限类问题时它给出最直接的证据——同一脚本在服务、计划任务、交互登录三种上下文下结果不同时,先用 whoami 对齐身份,再谈权限。
基本信息
| 适用平台 | Windows Vista / Server 2008 及以后;Linux 与 macOS 也有同名命令但输出不同 |
|---|---|
| 权限要求 | 普通用户即可执行 |
| 语法 | whoami [/user /groups /priv /all] |
| 关键开关 | /user 看 SID;/groups 看组与完整性级别;/priv 看令牌特权;/all 输出全量 |
典型使用场景
- 脚本结果与预期不符,先确认实际执行身份是服务账户还是登录用户
- 判断是否处于提权上下文:管理员完整令牌与标准令牌显示的组不同
- 排查服务缺权限:确认 SeBackupPrivilege、SeDebugPrivilege 是否在令牌里
- 安全核对:验证当前账号是否属于本地 Administrators 组
- 远程与本地执行差异定位:对比两侧 whoami /groups 的完整性级别
常用示例
常用示例
whoami # 当前身份,形如 DOMAIN\user
whoami /user # 账号 SID
whoami /groups # 所属组与完整性级别
whoami /priv # 令牌特权,含 Enabled/Disabled 状态
whoami /all # 以上内容全量输出
whoami /fqdn # 完全限定名,域环境输出 账号@域名输出逐段读法
| 输出段 | 内容 | 判读 |
|---|---|---|
| 首行 | 当前身份 | 域机为 域\账号,工作组机为 机器名\账号 |
| /user | SID | 排查同名账户时以 SID 为唯一依据 |
| /groups | 组列表与完整性级别 | 管理员组缺失说明拿到的是标准令牌 |
| /priv | 特权与启用状态 | Disabled 表示特权存在但当前未启用 |
| /fqdn | 完全限定名 | 域环境下输出 账号@域名 |
受 UAC 影响,同一用户在不同上下文会得到不同令牌:标准令牌里看不到管理员组,只有提权令牌才有。解读 whoami 结果必须连同“在哪个窗口、以什么方式执行”一起看。
whoami /priv 列出的是令牌拥有的特权及其启用状态:Disabled 表示特权存在但未启用,能否完成操作还要看调用方是否启用该特权。