Android 是如何实现 Root 权限的?

181 阅读3分钟

🎯 故事主线:勇敢的小明,想成为“系统管理员”

从前,有个叫小明的程序员,他拿到了一台 Android 开发用的设备。他发现:

“我只能打开 App、点点按钮,但是好多系统文件都动不了,我连 /system 文件夹都进不去!”

这时,一个声音告诉他:

“小明,如果你想成为这台手机的超级管理员(root) ,你需要走完下面这几步修行之路。”


🧙‍♂️ 第一关:打开开发者之门(开启开发者模式)

小明首先要做的,是开启手机的开发者能力:

bash

复制

# 连续点击“关于手机”里的版本号 7 次
# 然后在 设置 > 系统 > 开发者选项 中打开 USB 调试

这样,他就能用电脑通过 adb 命令和手机对话了:

bash

复制

adb devices
# 看到设备序列号,说明连接成功

🛡️ 第二关:解锁 Bootloader(解除封印)

开发用的机器通常允许解锁 bootloader,相当于“放开系统限制”:

bash

复制

adb reboot bootloader
fastboot oem unlock   # 某些厂商用 fastboot flashing unlock

系统提示“是否解锁”,小明果断选择 YES!

⚠️ 注意:解锁会清除数据,一定要提前备份!


🔧 第三关:刷入超级能力(预装 su 权限)

开发设备的系统是特别定制的,通常是 userdebug 版本,里面已经内置了超级管理员工具 su

我们来看看这个工具藏在哪:

bash

复制

adb shell
ls -l /system/xbin/su

如果看到这个文件,说明系统里已经有了“超级钥匙”!


🧪 第四关:启用 su 权限(使用超级钥匙)

小明尝试运行以下命令:

bash

复制

adb shell
su

如果看到提示符从 $ 变成了 #,恭喜你!

bash

复制

# whoami
root

小明现在已经是“系统之王”,可以修改一切了:

bash

复制

# mount -o remount,rw /system
# echo 'Hello root' > /system/hello.txt

🧱 第五关:解锁系统防护(禁用 verity 和 SELinux)

有时候系统还会有“自愈功能”,比如:

  • dm-verity:发现 system 分区被改动,就还原
  • SELinux:不让未知程序乱改系统

小明使用开发命令关闭它们:

bash

复制

adb disable-verity
adb reboot

# 开机后
adb root
adb remount

# 设置 SELinux 为宽松模式
setenforce 0

现在,小明可以自由“飞翔”了!


🤖 补充:开发机器的秘密代码

开发用的 Android 设备,通常系统编译参数如下:

makefile

复制

# device.mk 或 BoardConfig.mk 中
ro.secure=0           # 系统默认非安全模式
ro.debuggable=1       # 允许 adb root
persist.sys.root_access=3  # root 给 apps 和 adb

这些参数让设备天生支持 root,不需要刷第三方工具。


🧭 小明总结秘籍

bash

复制

# 一套完整的开发机 root 流程
adb devices
adb reboot bootloader
fastboot oem unlock
adb disable-verity
adb reboot
adb root
adb remount
adb shell
su

🚀 小白也能看懂的 Root 核心原理

名称通俗解释
root超级管理员
su变身成 root 的魔法棒
adb root让电脑直接以 root 身份连接手机
remount把系统盘变成可写
dm-verity系统的自愈机制,防改动
SELinux系统的保安,阻止非法操作

📌 最后提醒

🛑 正式用户手机一般不允许 root,开发机才有这个权限。乱 root 商用机可能会导致数据丢失、失去保修、无法 OTA 更新!