在系统服务AOSP中以root身份运行shell命令

时间:2013-05-17 14:48:15

标签: android android-source

我定制AOSP。我有system service,以SystemServer与其他system services开头。我将从service在shell中执行一些命令。 我使用Runtime.getRuntime().exec(command) - 如果命令不需要root权限,这可以正常工作。我的系统服务有" system"权利,而不是" root" (这是合乎逻辑的)。我尝试使用"su -c"前缀(例如 - "su -c mkdir /mnt/sdcard/NewFolder")执行命令,但没有成功。

问题:如何以root身份执行shell命令? ( su binary包含在构建中)。我应该创建以root权限运行的服务,而不是系统权限(如果可能的话!)

编辑:我不需要SuperUser.apk,只需要su二进制文件(可能的busybox用于其他功能)。

1 个答案:

答案 0 :(得分:1)

你得到什么错误? 可能是你需要修改system / extras / su / su.c:

/* Until we have something better, only root and the shell can use su. */
myuid = getuid();
if (myuid != AID_ROOT && myuid != AID_SHELL && myuid != AID_SYSTEM) {
    fprintf(stderr,"su: uid %d not allowed to su\n", myuid);
    return 1;
}