Как добавить разрешение root для какого-либо приложения самостоятельно?

11

Есть ли способ, которым я намеренно предоставляю права root для какого-либо приложения? Не автоматически через SuperSU, когда конкретное приложение запрашивает разрешение root, но таким образом, чтобы выбрать приложение через какой-либо инструмент и предоставить ему права root.

Например, я добавляю свое любимое текстовое приложение в утвержденный список, а затем я могу открыть корневые файлы через это приложение.

AnDroDroo
источник

Ответы:

13

Нет. Вы должны попросить разработчика приложения сделать это.

В UNIX-подобных системах разрешения управляются с помощью так называемых UID.

Каждый процесс имеет один, и он диктует, что они могут получить доступ. Кроме того, есть группы, которые имеют разрешение, которое могут использовать их участники. Когда у приложения есть разрешения, как будто Write to SD cardони помещены в группу, у которой есть это разрешение.

Права доступа root являются исключением, поскольку они не объявлены в манифесте приложения, а скорее в его коде. Корень - это также не группа, а отдельный UID (так как это отдельный пользователь), поэтому приложению не так просто его использовать. Для этого должны быть явно написаны приложения с правами root.

Это работает каждый раз, когда приложение хочет сделать что-то как root, оно должно запросить suдвоичный файл, чтобы сделать это. suЗатем спросит приложение, которое управляет этими разрешениями (например, SuperSU), разрешено ли приложению получать root-доступ. Если это не так, он предложит вам разрешить или запретить это. Тогда действие выполняется как root, а не как пользователь приложения. Эти действия являются не неотъемлемой частью приложения, а скорее внешним исполняемым файлом.

Хотя теоретически это можно добавить в приложение, это будет нетривиальный процесс, требующий знания написания кода smali, который является внутренним форматом виртуальной машины Dalvik (часть системы, в которой выполняется файл apk) и называется smali. И даже в этом случае возникнет огромный риск для безопасности, если приложение позволит другим приложениям получать к нему доступ: оно не будет знать, как отделить привилегированный корневой доступ от обычного доступа. Так что на самом деле это нереально.

RR
источник
1
Для тех, кто не знает, что такое smali: это диалект ассемблера для кода виртуальной машины dalvik для Android, который часто используется в декс-файлах для обратного проектирования. Что может быть немного неясным: приложение само должно позаботиться о том, чтобы получить root- права программно. Вот почему разработчик должен включить его. Добавление его в SuperSU не помогает до тех пор, пока приложение не использует свои права root.
ce4
Поэтому я не могу открыть какой-нибудь корневой текстовый файл через мой любимый текстовый редактор, если программисты не написали приложение, чтобы принять открытие корневых файлов?
AnDroDroo
1
Совершенно верно. В качестве примера: если приложение не будет запущено с правами root и попытается открыть какой-либо «корневой файл», оно просто получит «отказано в разрешении» - так как доступ к файлу по-прежнему будет осуществляться с помощью UID приложения (оно не будет запрашивать разрешения суперпользователя, чтобы открыть его). С другой стороны, если приложение запускается с использованием корневого UID (т.е. su <app>), оно получит доступ к этому корневому файлу как root и, таким образом, получит разрешение.
Иззи
Вот почему я не смог использовать некоторые другие текстовые редакторы для чтения корневых файлов :).
AnDroDroo
1
@ Изя AFAIK, вы не можете запустить обычное приложение Android с корневым UID или изменить UID запущенного приложения. Единственное, что вы можете сделать, - это запускать программы командной строки с su и, следовательно, выполнять команды с правами администратора.
Роберт
1

Я нашел способ, который может помочь вам. Я использовал это, чтобы предоставить root-доступ к Tasker .

Если вы используете эмулятор терминала для предоставления доступа на чтение, но не на запись в папку с помощью

  • su
  • chmod 775 /location/of/folder/

тогда ваш текстовый редактор сможет прочитать этот каталог, и если вы сможете попытаться сохранить файл в папке, он попытается запросить разрешение root.

Это может также просто дать ошибку записи.

Грэм Эванс
источник
Все каталоги /location/of/folder/от корня до верха должны быть доступны для чтения / прохождения. Также SELinux может запретить доступ. Так что такой подход редко бывает практичным.
Ирфан Латиф