最可靠的方式是检查当前用户的 uid 是否为 0,因为 linux 内核只认 uid=0 的用户为 root 权限主体;推荐用 id -u 判断,脚本中可写 if [ $(id -u) -eq 0 ]; then echo "是 root"; fi;避免仅依赖 $user 或 whoami。

最可靠的方式是检查当前用户的 UID 是否为 0,因为 Linux 内核只认 UID=0 的用户为 root 权限主体,与用户名无关。
用 id -u 判断(推荐)
这是最简洁、最通用的方法,适用于所有 POSIX 兼容 shell:
- 执行
id -u,若输出0,说明当前用户具有 root 权限 - 在脚本中常用写法:
if [ $(id -u) -eq 0 ]; then echo "是 root"; fi - 它不依赖环境变量或用户名,即使有人把普通用户改名为 root(但 UID≠0),也不会误判
检查环境变量 $UID
大多数现代 shell(bash、zsh 等)会自动设置 $UID 变量,值为当前用户 UID:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 直接运行
echo $UID,结果为0即表示 root 权限 - 脚本中可写:
if [ "$UID" -eq 0 ]; then ... - 注意:该方式在极简 shell(如某些嵌入式 ash)中可能不可靠,因
$UID非 POSIX 标准变量
避免仅依赖 $USER 或 whoami
仅比对用户名(如 [ "$USER" = "root" ] 或 whoami | grep -q "^root$")存在风险:
- 如果普通用户被手动设为 UID=0(例如通过修改
/etc/passwd),它就拥有完整 root 权限,但用户名未必是 root - 反过来,用户名是 root 但 UID≠0(比如某人新建了叫 root 的普通账户),则完全无特权
- 因此,仅看名字不能反映真实权限状态
快速命令行验证
终端里一行搞定:
id -u && echo "→ UID 是 $(id -u)"或者带提示的一行判断:
[ $(id -u) -eq 0 ] && echo "已获 root 权限" || echo "非特权用户"










