Доступ к корневой папке системы уровня Android
У меня есть права суперпользователя, и я тестирую новую функцию для моего приложения, которая включает доступ и редактирование системной папки Android.
Однако мой код, похоже, ничего не меняет. Я на Marshmallow CM 13.
Process p;
try {
// Preform su to get root privileges
p = Runtime.getRuntime().exec("su");
// Attempt to write a file to a root-only
DataOutputStream os = new DataOutputStream(p.getOutputStream());
os.writeBytes("echo \"Do I have root?\" >/system/etc/temporary.txt\n");
// Close the terminal
os.writeBytes("exit\n");
os.flush();
try {
p.waitFor();
if (p.exitValue() != 255) {
// TODO Code to run on success
toastMessage("root");
}
else {
// TODO Code to run on unsuccessful
toastMessage("not root");
}
} catch (InterruptedException e) {
// TODO Code to run in interrupted exception
toastMessage("not root");
}
} catch (IOException e) {
// TODO Code to run in input/output exception
toastMessage("not root");
}
1 ответ
Решение
/system
точка монтирования смонтирована RO по умолчанию. Даже с разрешениями корневого уровня единственный способ записи в него - перемонтировать его как RW. Кроме того, вы все еще можете столкнуться с некоторыми проблемами с SE Android (SE Linux для Android), который присутствует и находится в полном принудительном режиме после Lollipop. В платформу может быть встроена политика безопасности SE Android, которая ограничивает доступ к определенным частям файловой системы, даже для root.