【免费下载链接】BakaSU
A KernelSU based root solution for Android
BakaSU 是一款基于 KernelSU 的 Android 内核 Root 方案。本文带你快速掌握三件事:su 命令的正确用法、管理器中的授权策略(Allowlist / App Profile),以及ADB Root 一键开启,让新手也能安全、可控地使用 Root 权限。
一、BakaSU 的 su 是如何工作的?
与传统 Root 不同,BakaSU 并不在系统里放一个真正的su二进制文件,而是由内核直接拦截:
- 当应用执行
/system/bin/su时,内核的 su 兼容层(su compat)拦截这次execve调用,并将其重定向到用户空间的守护进程ksud(位于/data/adb/ksu/bin/); ksud通过 supercall 向内核请求提权,内核在确认该应用已在允许列表(allowlist)后,才会执行escape_with_root_profile(),按你配置的Root Profile完成提权。
相关源码:
- su 拦截与重定向:kernel/feature/sucompat.c
- 提权请求处理(
KSU_IOCTL_GRANT_ROOT):kernel/supercall/dispatch.c - supercall 命令定义:uapi/supercall.h
💡 这意味着:只有在管理器中授权过的应用,
su才能真正生效;未授权应用即使调用了su,内核也会直接拒绝。
二、授权策略速查:管理器中的三套机制
1. 允许列表(Allowlist)——决定谁能 su
- 应用首次请求 Root 时,管理器会弹出授权弹窗,可选择允许 / 本次允许 / 拒绝;
- 已授权列表持久化保存在
/data/adb/ksu/.allowlist(见 kernel/policy/allowlist.c); - 在管理器的SuperUser(超级用户)页面可随时撤销或重新授权任意应用:SuperUserPage.kt。
2. App Profile——把 Root 关进笼子
BakaSU 为每个应用维护一份"权限档案"(App Profile),核心是两组配置(定义见 uapi/app_profile.h):
| 配置 | 作用 |
|---|---|
| Root Profile | 该应用提权后的身份:UID/GID、附加组、Capabilities、SELinux 域、命名空间,以及是否禁止再次提权(no_new_privs) |
| Non-Root Profile | 该应用未获授权时是否卸载模块(umount_modules),默认为是 |
也就是说,即使授予了 Root,你也可以把某个应用的权限"裁剪"到最小,防止它被恶意利用。配置界面在管理器的应用详情与 App Profile 页面:AppProfile.kt、RootProfileConfig.kt。
3. 多管理器支持
BakaSU 内核可以搭配官方 KernelSU 管理器或 KOWSU 管理器使用,授权体验一致(见 docs/zh/README.md)。
三、su 命令常用选项速查
su由ksud提供,常用选项如下(实现见 userspace/ksud/src/android/su.rs):
| 命令 | 说明 |
|---|---|
su | 进入 root shell |
su -c "命令" | 以 root 执行单条命令 |
su -l | 以登录 shell 方式启动 |
su -s /system/bin/sh | 指定要使用的 shell |
su -p | 保留当前环境变量 |
su -M | 强制在全局挂载命名空间下运行 |
su -g 1000 / -G 1000,3003 | 指定主组 / 附加组 |
su -Z u:r:magisk:s0 | 指定 SELinux 上下文 |
su -W | 不使用 ksud 的文件描述符包装 |
su --ksu-no-new-privs | 禁止该进程及其子进程再次提权 |
示例:
su -c "getprop ro.build.version.sdk" # 单条命令 su -M # 需要看到模块挂载内容时使用四、ADB Root:一键让 adb shell 变 root
BakaSU 内置 ADB Root 功能,开启后adb shell直接获得 root,无需再输入su。
开启方式:管理器 → 设置 → 内核功能 →ADB Root("Run adbd daemon with root privileges"),开关代码见 SettingsPage.kt。
工作原理:内核的adb_root特性(特性 ID 见 uapi/feature.h)会在每次启动adbd守护进程时注入LD_PRELOAD=/data/adb/ksu/lib/libadbroot.so,并切换到 root 的 SELinux 上下文,实现见 kernel/feature/adb_root.c。
⚠️安全提醒:官方字符串也明确提示——"Do not enable this unless absolutely necessary"(见 strings.xml)。仅在开发调试时开启,日常使用请保持关闭,避免降低设备安全性。
五、常见问题排查
- 提示
su: not found或无响应:确认管理器中已授权该应用,且未处于"拒绝"状态; - su 成功但看不到模块内容:未授权应用默认会卸载模块视图,可尝试
su -M; - 排查权限被拒原因:开启 Sulog(su 日志),在管理器日志页查看每次授权的内核记录,界面见 SulogScreen.kt,内核侧见 kernel/sulog/;
- 特性总开关:su 兼容层、模块卸载、Sulog、ADB Root、SELinux 隐藏等内核特性均可通过 supercall 开关,统一枚举定义在 uapi/feature.h。
六、关键路径一览
| 内容 | 路径 |
|---|---|
| su 兼容层(内核) | kernel/feature/sucompat.c |
| 允许列表(内核) | kernel/policy/allowlist.c |
| ADB Root(内核) | kernel/feature/adb_root.c |
| 特性开关定义 | uapi/feature.h |
| su 命令实现(用户空间) | userspace/ksud/src/android/su.rs |
| 管理器授权页面 | SuperUserPage.kt |
| 项目说明文档 | docs/zh/README.md |
按以上步骤操作,你就能在 BakaSU 中既方便地使用su与 ADB Root,又把 Root 权限稳稳地关在自己掌控的"笼子"里。
【免费下载链接】BakaSU
A KernelSU based root solution for Android
相关推荐
终极指南:Facebook Python SDK权限管理——如何正确处理用户授权的完整教程
终极指南:Facebook Python SDK权限管理——如何正确处理用户授权的完整教程 Facebook Python SDK是一款强大的工具,用于与Fac
后端【亲测免费】 如何安装与使用Termux-ADB:无需root权限的ADB快速上手指南
如何安装与使用Termux ADB:无需root权限的ADB快速上手指南 项目概述 Termux ADB 是一个专门为Termux环境设计的ADB(Androi
开发工具MobileViTv2_075.cvnets_in1k实战教程:从安装到部署的完整流程
MobileViTv2_075.cvnets_in1k实战教程:从安装到部署的完整流程 MobileViTv2_075.cvnets_in1k是一款基于Mobi
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考