051 id命令

命令说明

id 显示当前或指定用户的 UID、GID 及所属全部组,是排查“为什么没权限”时第一个要敲的命令。

语法

id [选项]... [用户名]

常用参数

参数说明
(无参数)显示当前用户的 uid/gid 与全部附加组
用户名查看指定用户,如 id zhangsan
-u只显示有效 UID
-g只显示主组 GID(等价 groups 的第一项)
-G只显示用户所属所有组的 GID 列表
-n配合 -u/-g/-G 显示名称而非数字
-Z显示 SELinux 安全上下文
real/effective输出中 ruid/uid/gid 区分真实与有效身份(setuid 程序可见)

使用示例

$ id

查看当前身份:uid=1000(zhangsan) gid=1000 groups=...

$ id www

查看 nginx 运行账号的组(排查 403 常用)

$ id -u

只要 UID,脚本判断 root:[ $(id -u) -eq 0 ]

$ id -nG

列出当前用户所有组名,检查是否在 docker/sudo 组

$ id -gn

显示主组名称

$ id zhangsan | grep -q docker && echo OK

脚本判断用户是否具备 docker 组

$ id -Z

查看 SELinux 上下文(排障 denied 时用)

$ groups zhangsan

等价视角:只显示组名列表

实用技巧

  • 权限排查三板斧:ls -l 看文件属主权限 → id 看自己身份 → 判断缺 r/w/x 还是缺目录 x 遍历权限。
  • 新加入的组要重新登录才出现在 id 输出里,因为组在登录时载入;当前会话可用 newgrp 或 sg 组 -c 命令 临时生效。
  • id 与 whoami 区别:whoami 只输出当前有效用户名;id 信息全且可查他人。
  • 脚本中判断 root 用 id -u 等于 0,比比较用户名更可靠(root 可改名)。
  • setuid 程序(如 passwd)里 id 会显示 uid=0(euid=0) 与 ruid 的差异,理解 ruid/euid/suid 三者是权限进阶必修课。