如何从源代码授予对特定应用程序的 root 访问权限而不是对 ROM 进行 root 访问?

2023-11-26

我正在从源代码编译 Android ROM,并且我有一个应用程序,我希望它能够预安装并以 root 权限运行。

如何在不 root 整个 ROM 的情况下授予该特定应用程序的 root 访问权限?


希望你不需要root...

典型的 Android ROM 只为很少的东西提供 root 权限,符合最小特权原则。相反,应用程序被授予它们所需的精确权限。

为什么你需要这个应用程序有root权限?您应该首先查看列表所有内部未发布的 Android 权限看看其中一个是否符合您的要求。由于您正在构建系统应用程序,您甚至可以使用signature其他应用程序通常无法获得的权限。您只需确保您的应用程序由构建 Android ROM 所用的密钥进行签名 - 然后您可以将其与 ROM 一起分发或单独分发,并且它仍然可以访问您所需的权限。

这样做的优点是:

  • 如果您的应用程序遭到破坏或存在错误,其影响是有限的。
  • 您的实际 Java 代码具有这些权限,因此无需编写繁琐的命令行。

因此,如果您可以通过这种方式完成任务,那就这样做吧。

但如果你真的这么做...

如果你确实需要 root,那么事情就会变得棘手。

你有三个选择。按优先顺序排列:

  • 添加新的系统服务。
  • 添加一些替代的 setuid-root 二进制文件,它可以满足您的需要。
  • 修改su二进制文件来准确检查谁在调用它。

如果你真的需要root,那么我会添加新的系统服务。这可以以 root 身份运行。然后,您将添加合适的额外 API,以便您的应用程序可以调用它 - 并且权限可以是signature-level 以便只有您的系统应用程序可以调用它。这是在 Android 领域架构上“正确”的做法。

第二个或第三个选项涉及创建一些可以执行您想要的操作的命令行工具,但我不知道这样的工具检查谁在调用它的安全方法。允许任何应用程序调用此功能可能是可以接受的。如果是这样,新的 setuid-root 可执行文件可能是正确的选择。但是,正如我所说,我不知道如何阻止其他应用程序运行它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从源代码授予对特定应用程序的 root 访问权限而不是对 ROM 进行 root 访问? 的相关文章

随机推荐