在Linux系统中,id
命令是查看用户和组身份信息的核心工具,它直接显示当前用户或指定用户的用户ID(UID)、主组ID(GID)以及所属的附加组信息,这些信息对权限管理、故障排查和系统安全至关重要,以下是详细使用指南:
id [选项] [用户名]
- 不加任何参数时,显示当前登录用户的身份信息:
$ id uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),27(sudo)
uid=1000(ubuntu)
:用户ID及用户名gid=1000(ubuntu)
:主组ID及组名groups=
:用户所属的所有附加组(如adm
、sudo
)
常用选项及示例
-
查看特定用户
添加用户名参数,查看其他用户信息(需权限):id root # 输出示例:uid=0(root) gid=0(root) groups=0(root)
-
仅显示用户ID(UID)
-u
选项:id -u # 当前用户UID id -u root # 输出:0
-
仅显示主组ID(GID)
-g
选项:id -g # 当前用户GID
-
显示所有组ID(包括附加组)
-G
选项:id -G # 输出:1000 4 27(数字形式) id -G -n # 输出:ubuntu adm sudo(组名形式)
-
显示真实ID(忽略SUDO权限)
-r
选项常与-u
/-g
组合,查看实际身份:sudo id -ur # 显示执行sudo前的原始UID
输出解析与关键概念
- UID和GID:
0
表示root用户/组(最高权限)。- 普通用户UID从
1000
开始(依发行版而定)。
- 组的作用:
- 主组(Primary Group):用户创建文件时默认所属组。
- 附加组(Supplementary Groups):决定用户对其他资源的访问权限(如
sudo
组赋予管理员权限)。
实际应用场景
-
权限问题排查
当用户无法访问文件时,用id
确认其是否属于文件所属组:id -Gn # 查看当前用户所有组名 ls -l file.txt # 对比文件所属组
-
脚本中获取ID
在Shell脚本中调用id
进行权限判断:if [ $(id -u) -ne 0 ]; then echo "请使用root运行!" exit 1 fi
-
用户管理辅助
结合/etc/passwd
和/etc/group
文件验证用户配置:id ubuntu # 验证用户是否存在 grep 1000 /etc/group # 根据GID查找组信息
注意事项
- 权限限制:普通用户无法查看其他用户的敏感信息(如
id root
可能被拒绝)。 - 环境差异:不同Linux发行版(Ubuntu/CentOS等)的UID分配规则可能不同。
- 相关命令补充:
whoami
:仅显示当前用户名。groups
:仅显示用户所属组名。
掌握id
命令是Linux用户管理和权限控制的基础,通过灵活使用选项,可快速获取关键身份信息,高效解决权限问题,建议通过man id
查看完整手册,深入理解其工作机制。
引用说明基于Linux核心工具链的官方文档(GNU coreutils 9.1)及Unix权限管理标准(POSIX),参考来源包括The Linux man-pages project和Ubuntu Server Guide,实践示例在Ubuntu 22.04 LTS环境下验证。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/10062.html