Доступ к корневой папке системы уровня 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.

Другие вопросы по тегам