id 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,属于用户与权限命令族(见用户与权限命令族)。"我是谁、属于哪些组"一句话答清。
id 显示当前用户(或指定用户)的数字身份:uid、gid、以及所属的所有组。排查"为什么我没权限""为什么 sudo 不认我"时,先看 id。
一、基本用法
bash
id # 当前用户:uid=1000(alice) gid=1000(alice) groups=...
id bob # 查指定用户 bob 的身份
id -un # 只输出用户名(alice)默认输出含数字 uid/gid 和名字,以及
groups=列出的所有附属组(含主组)。id bob不需要权限就能查别人基本信息。
二、取单个字段
bash
id -u # 只取 uid(数字)
id -g # 只取 gid(主组,数字)
id -G # 所有组 gid(空格分隔)
id -n -G alice # 配合 -n 显示组名而非数字脚本里常要数字 uid(
id -u)或组列表(id -G),-n把数字翻译成名字。比如判断"当前用户是不是 root"用[ "$(id -u)" -eq 0 ]。
三、实战:判断是否为 root
bash
if [ "$(id -u)" -ne 0 ]; then
echo "需要 root,请用 sudo"
exit 1
fi这是脚本开头的标准守卫:用
id -u检查是否 root(uid 0),不是就提示用 sudo。比解析 whoami 更准确(whoami 受 EUID 影响可能有歧义)。
四、与 whoami / groups 的关系
bash
whoami # 只给有效用户名(见 [whoami](/linux/cmd/whoami.md))
groups # 只给组列表(见 [groups](/linux/cmd/groups.md))
id # 三者合一,最全
id是 whoami + groups 的超集,想一次看全就用id。whoami/groups 适合脚本里只要单一信息的场景。
一句话总结
id = 用户与组身份:显示 uid/gid/所有附属组;id user 查他人;id -u/-g/-G 取数字、-n 转名字;脚本判断 root 用 [ "$(id -u)" -eq 0 ](比 whoami 准);是 whoami+groups 的超集,想看全用 id。