shizukurunner 中文文档 下载 App

降权执行开关 - 强制以 shell 身份运行 root 环境下的命令

降权是什么

降权执行是 Runner 的一个安全功能:无论 Shizuku 服务是用 root 还是 adb 方式启动,开启降权开关后,Runner 执行的每一条命令都会被强制以 shell(uid=2000)身份运行,而不是继承服务进程的原始权限。

从界面上看就是 Runner 主界面左上的两个大字按钮——"降权"和"不降权",点一下切换。

降权开关位置
主界面可见降权/不降权切换

为什么需要降权

有 root 权限时执行某些命令可能会造成不可逆的系统损坏:

如果你不确定某条命令会做什么、或者是从网上复制来的、或者是在测试阶段,开降权是最稳妥的做法——shell 权限下很多危险操作会直接被 SELinux 拒绝,而不是默默执行。

降权能挡什么

会被挡的(因为 shell 没权限):

不会被挡的(shell 权限够):

什么时候开降权

建议开启:

建议关闭:

验证降权是否生效

执行任意命令后看弹窗:

在 root 设备上特别有用——不开降权时 Runner 会显示 root 权限,开了之后应该变成 shell 权限。

实现原理

Runner 的降权功能引入了一个 native 库 libchid.so,在执行命令前动态调整进程的 uid/gid。实现上比简单的 su -c '...' 更可控——su 切换 root 是单向的(shell → root),降权是反过来的(root → shell),需要底层 API 支持。

这个库文件也是 Runner 体积从 2KB 级涨到 80KB 级的原因。