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

标签 android root

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

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

最佳答案

希望你不需要root...

根据principle of least privilege,典型的 Android ROM 只提供很少的 root 权限。 .相反,应用会被授予它们所需的精确权限。

为什么您需要这个应用程序拥有 root 权限?您应该首先查看 all the internal unpublished Android permissions 的列表看看其中一个是否做你想做的。由于您正在构建系统应用程序,因此您甚至可以使用其他应用程序通常不可用的 signature 权限。您只需要确保您的应用程序由您构建 Android ROM 所用的 key 签名 - 然后您可以随 ROM 分发它或单独分发它,它仍然可以访问您需要的权限。

这样做的好处是:

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

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

但如果你真的这样做了......

如果您真的需要 root,那么事情就变得棘手了。

您有三个选择。按优先顺序:

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

如果你真的需要 root,那么我会 add a new system service .这可以作为 root 运行。然后,您将添加合适的额外 API,以便您的应用程序可以调用它 - 权限可以是 signature 级别,以便只有您的系统应用程序可以调用它。这是在 Android 领域实现它的架构上“正确”的方式。

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

关于android - 如何从源代码授予对特定应用程序的 root 访问权限而不是对 ROM 进行 root 访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16217294/

相关文章:

javascript - 使用 while 循环在 javascript 中不断添加值

solaris - 如何将 OpenSolaris x86 引导到单用户模式?

android - 如何在android源中默认启用开发者选项?

Android textview 颜色无故改变

android - 同步 Android Activity

Android AVD 模拟器在 Android Studio 中不工作

android - 如何将属性 onClick 设置为 ScrollView?

android - Android 上的 TCP 数据包编辑

bash - 如何以 root 身份打开桌面条目?

java - 如何连续进行多次根操作(批量根操作)?