kernelsu 中文文档 下载 App

Root Profile 的 UID GID 与补充组——给 su 降级的第一个抓手

Android 的用户与组模型

Linux 系统用「用户 + 组」做权限判断:每个用户有唯一 UID,每个用户可属多个组,每组有 GID。UID 0 是 root 用户,拥有最高权限。Android 里每个 App 都是一个独立用户(share uid 的情况除外):

注意:这里的 UID 与「手机多用户 / 工作资料」不是一个概念。工作资料是对 UID 的分片(如 110000-119999),其中每个应用同样拥有自己的独有 UID。

在 adb shell 里执行 id,能看到 UID、主组与一长串补充组:

uid=2000(shell) gid=2000(shell) groups=2000(shell),1004(input),1007(log),
1011(adb),1015(sdcard_rw),3003(inet),... context=u:r:shell:s0

组是很多能力的开关:inet 组代表能建网络 socket,sdcard_rw 代表可读写存储。

Root Profile 能改什么

Root Profile 可以自定义应用执行 su 之后进程的 UID、GID 与补充组。两个经典用法:

一个必须分清的边界

App Profile 控制的是 su 之后的权限,不是应用本身的权限。应用自己申请了网络权限的话,它不走 su 也能联网;去掉 su 的 inet 组只是让 su 这条路不通。

配置建议