从Android应用程序以shell用户身份运行命令

时间:2016-04-05 21:35:43

标签: android android-ndk

我正在尝试对一个只授予" shell"的文件执行fopen()函数。来自我的Android应用程序上的服务触发的本机(C ++)应用程序。当我从shell运行本机代码作为PIE时,我能够打开文件进行读取,但是如果我从Android应用程序尝试,则无法打开文件,因为Android应用程序在不同的用户空间中运行所以我无法打开文件。我的问题是,是否可以将命令作为" shell"用户或贝壳的孩子"来自Android应用程序。我希望能够在不使设备生根的情况下做到这一点,所以su是不可能的。

1 个答案:

答案 0 :(得分:1)

如果没有root设备,您无法更改应用的用户ID。如果可以,安全模型将不会非常有用。如果您的应用需要访问该文件,则需要授予适当的权限。

另一个常见的解决方法是拥有一个以“shell”用户身份运行的服务,其作用是打开文件并交回文件描述符。棘手的部分是你需要一种方法来启动该服务作为“shell”用户,这使我们回到需要“su”。

FWIW,无论您是使用Java还是C ++进行编码,情况都是一样的。