☰
把 Root 关进笼子:BakaSU App Profile 应用级权限定制完整指南
2026/10/11 16:33:38 网站建设 项目流程

【免费下载链接】BakaSU

A KernelSU based root solution for Android

项目地址:https://gitcode.com/gh_mirrors/re/BakaSU
点击查看免费下载

BakaSU 是一款基于 KernelSU 的 Android 内核级 Root 解决方案,而App Profile(应用配置)正是它最具特色的功能之一:它能让 Root 权限"住进笼子",为每个应用单独定制身份(UID/GID)、权能、SELinux 域等权限边界,真正做到"最小权限原则"。无论你是想给 ADB 一个受限 shell,还是给高风险应用收窄 Root 能力,这份 BakaSU App Profile 应用级权限定制指南都能帮你在 5 分钟内上手。

一、App Profile 是什么?为什么值得用

默认情况下,通过 KernelSU 获得 Root 的应用拿到的是一整包 root 身份(uid 0、全部 Linux 权能、全局挂载命名空间)。这就像给每把钥匙都配了万能锁。

App Profile 的思路是:在 su 执行的那一刻,由内核按应用逐个"改写身份",而不是让所有应用共享同一套 root。它的权限模型定义在 uapi/app_profile.h 中,分为两类:

配置块适用场景可定制项
root_profile(Root 状态)应用已获 RootUID / GID、组、Linux 权能、SELinux 域、挂载命名空间、Flags
non_root_profile(非 Root 状态)应用未获 Root是否卸载模块(还原模块修改的文件)

内核侧真正执行"换身份"的逻辑位于 kernel/policy/app_profile.c 的escape_with_root_profile():它在 su 时替换 UID/GID、写入权能位、设置 SELinux 域并切换挂载命名空间——这就是"笼子"上锁的瞬间。🔒

二、快速上手:三种模式一键切换

打开管理器,在「超级用户」页面点击已授权的应用,即可进入 App Profile 编辑页(界面实现见 ui/screen/AppProfile.kt)。页面顶部的「Superuser」开关决定该应用能否 Root;下方则有三种模式可切换:

  • 默认(Default):不定制,su 后即为标准 root;
  • 模板(Template):一键套用现成配置(本地模板或在线同步的模板);
  • 自定义(Custom):手动逐项填写 uid、gid、权能等字段(ui/component/profile/RootProfileConfig.kt)。

💡 新手建议:先用「模板」体验效果,理解每个字段的含义后再切到「自定义」。

三、自定义模式:逐项定制 Root 权限

进入自定义模式后,你可以修改以下字段(保存即生效,即时写入内核):

1. UID 与 GID:给应用换一个新身份

默认 su 后 UID 为 0。把它改成2000(shell)或任意普通用户号,应用就只是"以普通用户身份运行、但保留权能",而不是系统 root——检测难度和误操作风险都显著降低。

2. 组(Groups)与权能(Capabilities)

  • 组:最多可加入 32 个组(如root、shell、system),对应源码中的 KSU_MAX_GROUPS 定义;
  • 权能:按需勾选 Linux capability(如CAP_NET_ADMIN),未勾选的权能被内核直接剥夺,实现真正的"只给够用"。

3. 挂载命名空间:隔离模块环境

三个选项(strings.xml 中文说明):

选项含义
继承(Inherited)跟随应用当前环境
全局(Global)使用系统全局命名空间
独立(Individual)为应用单独一套命名空间,模块改动互相隔离

4. Flags:禁止"二次提权"

勾选「no_new_privs」后(FLAG_KSU_NO_NEW_PRIVS),该 root 会话内部无法再通过 KernelSU 进一步提升权限——中文界面描述为:"禁止从此 Root Profile 的上下文中通过 KernelSU 进一步提升权限"。

5. SELinux 域与规则

最硬核的一项:为 su 后的进程指定 SELinux domain,并可附带一段 sepolicy 规则(编辑入口见 RootProfileConfig.kt)。规则会实时校验合法性,保存失败会自动回滚(AppProfileViewModel.kt)。

四、不给 Root 也能定制:一键还原模块修改

关闭 Superuser 的应用同样有定制项——「卸载模块」(ui/component/profile/AppProfileConfig.kt):

启用该选项后将允许 KernelSU 为本应用还原被模块修改过的文件。

适合"这个应用必须看到系统原生文件"的场景,例如某些依赖系统原生的工具类应用。📦

五、模板管理:批量套用权限配置

不想逐个手调?BakaSU 提供模板系统:

  1. 本地模板:把某个应用的自定义配置保存为模板,随时复用;
  2. 在线模板:点击「同步在线规则」拉取社区模板;
  3. 导入 / 导出:支持经剪贴板把模板 JSON 导入、导出到其他设备(ui/screen/Template.kt)。

模板与 SELinux 规则的持久化由用户空间的 ksud 完成,参见 userspace/ksud/src/android/profile.rs:配置写入/data/adb下对应目录,并在开机时自动重新加载。

六、常见场景速查表

场景推荐配置
ADB shell 日常调试模板「Adb」:uid 2000,仅保留必要权能
高风险 Root 应用自定义:低 UID + no_new_privs + 独立命名空间 + SELinux 域
应用读取被模块篡改非 Root 状态开启「卸载模块」
系统应用(uid < 2000)⚠️ 系统应用(除 uid 1000 外)禁止授予 su,防止拖垮整机,见 AppProfile.kt 的限制逻辑

七、想深入原理?关键源码路径一览

模块路径
权限结构定义(uapi)uapi/app_profile.h
内核侧换身份实现kernel/policy/app_profile.c
管理器数据模型domain/model/AppProfile.kt
模板列表与导入导出ui/screen/Template.kt
模板/SELinux 持久化(ksud)userspace/ksud/src/android/profile.rs
官方功能介绍docs/zh/README.md

结语

BakaSU 的 App Profile 把"给谁 Root、Root 到什么程度"变成了可精确控制的艺术:三种模式覆盖从新手到极客的诉求,模板系统让最佳实践可以一键流转。把 Root 关进笼子,既保留了内核级 Root 的强大,又守住了安全的底线——这正是 BakaSU 作为 KernelSU 衍生方案(其前身 ReSukiSU)在体验上的重要加分项。动手试试吧!

【免费下载链接】BakaSU

A KernelSU based root solution for Android

项目地址:https://gitcode.com/gh_mirrors/re/BakaSU
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询