我正在从源代码编译Android ROM,有一个应用程序我希望它被预装并以root权限运行。
如何授予这个特定应用程序root访问权限,而无需对整个ROM进行root?
典型的原生Android ROM只授予极少数事物root权限,符合最小特权原则。相反,应用程序被授予它们所需的精确权限。
为什么您需要此应用程序拥有root权限?您应该首先查看所有未发布的Android内部权限列表,看看其中是否有一个可以实现您想要的功能。由于您正在构建系统应用程序,因此甚至可以使用其他应用程序通常无法使用的signature
权限。您只需要确保您的应用程序由构建Android ROM的密钥签名-然后您可以将其与ROM一起分发或单独分发,它仍将具有您所需的权限访问。
这种方法的优点是:
因此,如果可能,请以这种方式完成您的任务。
如果你确实需要root权限,那么事情就变得棘手了。
你有三个选择。按优先级排序如下:
su
二进制文件,以检查调用它的确切身份。如果你确实需要root权限,我会添加一个新的系统服务。这可以作为root运行。然后,你需要添加适当的附加API,以便你的应用程序可以调用它 - 并且权限可以是signature
-级别,这样只有你的系统应用程序才能调用它。这是在Android领域中正确的架构方式。
第二或第三个选项涉及创建一些命令行工具来执行你所需的操作,但我不知道在保护应用程序的情况下,它们如何检查调用者的身份。允许任何应用程序调用此功能可能是可以接受的。如果是这样,那么添加一个新的setuid-root可执行文件可能是解决方法。但是,正如我所说,我不知道如何阻止其他应用程序运行它。