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 三者是权限进阶必修课。