2013-05-17 3 views
1

Я настраиваю AOSP. У меня есть system service, который начинается с SystemServer с другими system services. Я буду выполнять некоторые команды в оболочке из моего service. Я использую Runtime.getRuntime().exec(command) - это работает отлично, если команды не требуют прав root. У моей системной службы есть «системные» права, а не «root» (это логично). Я пытаюсь выполнить команды с префиксом "su -c" (например, - "su -c mkdir /mnt/sdcard/NewFolder"), без успеха.Запустить команду оболочки как root в системном сервисе AOSP

Вопрос: как выполнять команды оболочки как root? (su бинарный входит в сборку). Должен ли я создать сервис, который работает с корневыми правами, а не с правами систем

EDIT (если это возможно!): мне не нужно SuperUser.apk, только су двоичных (возможно BusyBox для дополнительной функциональности).

ответ

1

Какая ошибка у вас? Может быть, вы должны изменить систему/специальные принадлежности/су/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; 
} 
+0

процесс, который запускает команды оболочки, возвращают exitValue = 1. –

+0

то, что я могу изменить в системе/статистов/су/su.c для работы моего su бинарного с системного сервиса? –

+0

Должен ли я просто удалить это «если»? –