shizukurunner 中文文档 下载 App

shell 与 root 权限区别 - Runner 里的权限等级怎么选

两种权限来源

Shizuku 服务进程的身份取决于它怎么被启动的,这直接决定了 Runner 能拿到什么权限:

启动方式进程身份权限范围适合场景
adb 配对启动shell(uid=2000)adb shell 级别,能访问大多数系统目录但碰不到 SELinux 策略和受保护的系统分区大多数日常操作
root 启动root(uid=0)完整 root 权限,能读写所有系统分区、执行任何命令需要修改系统级文件或 SELinux 策略

怎么判断当前权限

在 Runner 主界面执行任意命令后,弹窗里会显示:

还可以在 Runner 主界面顶部状态条看"SHIZUKU 已运行"旁边的权限提示(部分版本有)。

shell 权限能做什么

shell 权限能覆盖大多数日常需求:

shell 权限做不到的:

root 权限能做什么

root 权限在 shell 权限的基础上增加:

但 root 权限也不是万能的——Android 10+ 引入的动态分区和 dm-verity 保护的分区(如 super.img 的只读 slot),即使 root 也无法直接修改。

降权执行开关

Runner 界面上有一个"降权"开关,它的作用是:

降权开关位置
Runner 主界面左上区域可见降权 / 不降权切换

什么时候该降权

安全优先的场景下,建议开启降权:

什么时候不要降权:

实际案例

以下场景需要不同权限等级:

冻结一个普通应用(如微博) → shell 权限就够:

pm disable-user --user 0 com.sina.weibo

修改系统分区文件 → 必须 root 权限,且不能降权:

mount -o rw,remount /system
echo 'ro.build.display.id=MyROM' >> /system/build.prop

查看所有正在运行的进程 → shell 权限够:

ps -A

修改 SELinux 策略 → 必须 root 权限:

magiskpolicy --live "allow shell system_file dir { read search }"