你可能听过一些关于root和Android最新版本的喋喋不休,甚至可能听说过“root of death”这样的东西被抛出。 事情 发生了 变化,Android中的新安全功能现在限制了具有超级用户权限的进程可以对系统分区执行的操作。 我会尝试尽可能最好地解释其中的一些,而不是扔掉太多的话,没有人(好吧,几乎没有人)会理解。 但有些是不可避免的。
你可能需要为此加一个硬的。
所有Android应用程序都来自称为zygote的系统进程。 在Android 4.3中,事情发生了变化,现在zygote有了新的安全策略。 即使我们可以使用suid(超级用户)权限来分叉进程,但新的限制限制了我们可以用它做什么。 这是SELinux的全部内容,这对用户安全性来说是一件好事。 我们的新流程(将其视为您尝试运行的根应用程序)在技术上具有root访问权限,但它实际上无法对其执行任何有用的操作。 这是一种非常好的方法,可以保护系统免受您不想要的恶意进程(如潜在的ZOMGMALWARE)访问所有内容。
有两种方法可以解决这一新的安全策略。 一个是通过shell进行root访问 - 你将手机连接到计算机并使用命令行进行通信 - 仍然可以正常工作。 您可以提升用户状态,并通过adb执行相同的操作。 如果没有你知道它,那么机会很小。
另一种方式是su守护进程。
守护程序是一个后台进程,不受活动用户的直接控制。 它安静地运行,等待有用的时间。 当它被调用时,它会按照它的设计去做,然后再回到隐藏状态。 在系统初始化期间需要调用su守护进程,这成为黑客入侵“库存”ROM的难点。
与Nexus一起发布的Android实施不会在/ data / system / sepolicy中寻找其他策略,如CyanogenMod和上游指示它应该。 它从ramdisk加载/ sepolicy文件并在一天内调用它。
+ Koushik Dutta
您至少需要一个修改过的启动映像才能在Android设备上启动自定义守护程序。 对于像CyanogenMod这样的东西来说,这不是问题,但这意味着你正在闪存除股票以外的其他东西来实现它。 闪烁的自定义图像,内核和ROM是很多人不想做的事情。
这就是我们所处的位置。 Android社区中最知名的人都在努力工作以使事情全部排序,但是根据您今天知道root的方式,root很有可能要求您在SU应用程序和二进制文件之外闪存自定义固件。 Android正在转向更安全的安全模型,这是一件好事,你只需要了解一下你的系统如何工作以及如何修改它以使其处于你想要的状态 - 这最终是另一件好事。
Google知道用户需要超级用户权限等内容。 他们很有可能以某种方式解决这些问题,要么通过要求root用于较少的事情,要么通过构建Android本身的解决方案。 如果您在计算机上运行Linux或OSX,您就知道拥有一个主文件夹可以让您在不提升任何权限的情况下完成大部分工作。 也许Google会朝这个方向发展。 或者他们可能会在开发者选项中将超级用户功能添加到Android中。 与此同时,他们将继续为想要或需要闪存自定义固件的用户制作完全可解锁的Nexus手机 - 而像CyanogenMod(以及其他地方)的开发人员将继续构建它。