Оглавление:
Мы любим получать ваши вопросы. Это всегда хорошо, когда мы можем помочь друг другу, и мы сами учимся, когда ищем ответы. Хотя мы не можем найти время, чтобы ответить на все из них, иногда возникает определенный вопрос, который заслуживает подробного ответа.
"Что означает root?" это один из тех вопросов. Эта концепция может быть простой для некоторых из нас, но для многих людей, которые не потратили время на игры с Android или любой другой операционной системой, основанной на разрешениях, стоит задать вопросы. Я постараюсь ответить на них как можно лучше.
права доступа
Прежде чем мы определим root, важно понять, почему он существует и как он работает. Это потому, что Android использует разрешения (точнее, разрешения на основе Linux) в структуре файла. Каждый файл, каждая папка и каждый раздел имеет набор разрешений. Эти разрешения определяют, кто может читать файл (просматривать содержимое или получать к нему доступ, не изменяя его), записывать в файл (иметь возможность изменять содержимое этого файла или создавать новый файл в папке или разделе) и выполнять файл. (запустите файл, если это тип, который может работать, как приложение). Это делается на основе пользователей и разрешений - некоторые пользователи имеют доступ, в то время как пользователи, у которых нет необходимых разрешений, не имеют доступа.
Когда вы впервые настраиваете свой телефон и включаете его в первый раз, вам присваивается идентификатор пользователя. Если другой пользователь входит в систему через Google, ему назначается другой идентификатор пользователя. Когда приложение установлено на вашем телефоне, ему также присваивается собственный идентификатор пользователя. Сама система является пользователем, и другие процессы, которые должны запускаться на вашем телефоне, могут иметь свой собственный идентификатор пользователя. Все, что может сделать что угодно с любыми файлами на вашем Android - это пользователь.
Система пользователей и разрешений - это то, как Android отслеживает, кто что может делать.
Допустим, вы устанавливаете приложение для обмена сообщениями. При установке ему присваивается идентификатор пользователя. Он также получает место на вашем собственном разделе данных, к которому имеет доступ только он. У вас есть разрешения на запуск приложения, а при запуске приложения у него есть разрешение на доступ к своей собственной папке данных и файлам. Приложение также может запросить разрешение на доступ к таким вещам, как адресная книга, SD-карта или библиотека фотографий. Если вы ответите «да» на эти запросы (или если вы согласны с разрешениями в более старых версиях Android), идентификатору пользователя приложения предоставляется разрешение на файлы данных этих вещей, что означает, что оно может просматривать папку данных и ее содержимое и, возможно, изменять их или добавить новые файлы. Приложение не может получить доступ к файлам данных, к которым у него нет прав доступа. Это означает (в нашем примере), что он не может делать такие вещи, как просмотр базы данных настроек или доступ к папке данных другого приложения. Для этого часто используется термин «песочница» - приложения находятся в песочнице и могут играть только в тех песочницах, в которых они имеют разрешение.
Для файлов, которые являются программами и могут выполняться (например, приложения), применяется та же модель разрешений. У вашего ID пользователя есть разрешение на запуск приложений, которые вы установили во время входа в систему. Системный пользователь имеет разрешение на их запуск, а другие пользователи системного уровня могут иметь доступ к приложениям или определенным процессам, которые используют приложения. Другие приложения не могут запускать приложения, у которых нет разрешения на запуск. Если вы добавили вторичного пользователя, у него нет доступа к вашим приложениям или файлам, и наоборот. На вашем телефоне есть файлы, папки и приложения, которые вы не можете просматривать, изменять или запускать. Обычно эти части Android требуют разрешений системного уровня (системного идентификатора пользователя) для каких-либо действий, и вы не являетесь системным пользователем или пользователем, обладающим правами системного уровня.
Переключение разрешений
Хотя технически возможно изменить способ загрузки телефона и файлы, которые он использует для запуска работающей системы и назначения повышенных разрешений для вашего идентификатора пользователя, это не безопасно и не практично. Но Android (и большинство систем на основе Unix или Linux) имеют так называемого пользователя root и поддерживают двоичный файл SubstituteUser (двоичный файл представляет собой небольшое приложение) для изменения идентификаторов пользователей. Они используются для администрирования системы на уровне ядра.
Поскольку люди, которые сделали ваш телефон, не хотят, чтобы у вас был легкий доступ к идентификатору пользователя root - и не все причины эгоистичны, потому что это также защищает вас и ваши личные данные - двоичный файл SubstituteUser не включен в большинство сборок Android. Без SubstituteUser мы не можем переключить наш идентификатор пользователя. Кстати, большинство вещей системного уровня в Android имеют схожие простые названия. Безопасность ядра (файлы в загрузчике и / или самом ядре) также построены таким образом, чтобы вы не могли переключать идентификаторы пользователей как часть модуля ядра SELinux (S ecurity- Enhanced Linux - сказал вам, что имена просты), Некоторые телефоны (на ум приходит Samsung Knox) имеют дополнительные средства защиты, и почти все компании, выпускающие Android, требуют, чтобы для внесения изменений необходимо было разблокировать загрузчик, чтобы эти файлы можно было изменить и позволить переключать идентификаторы пользователей., Некоторые телефоны, такие как BlackBerry Priv, даже идут дальше и не собираются загружаться, если мы что-то изменим (даже если сможем).
Чтобы стать пользователем root, вам нужен способ изменить свой идентификатор пользователя.
Как только мы преодолеем все это - либо путем разблокировки загрузчика с помощью авторизованных средств, либо с помощью какого-либо эксплойта, - мы можем поместить двоичный файл SU (SubstituteUser) в место, которое он может запустить, когда его вызывают для запуска - это называется PATH. Если какое-либо приложение находится в PATH вашего ID пользователя, оно будет работать, не сообщая системе, где оно находится. Вам также необходимо убедиться, что двоичный файл SU находится в том месте, где у вашего ID пользователя есть разрешение на выполнение (запуск) файлов. Любое другое приложение (в Google Play есть множество приложений, которым требуются права суперпользователя) также будет нуждаться в таком же доступе. Когда вы используете метод для рутинга вашего телефона, все это разбирается людьми, которые создали метод рута.
Как только все будет готово, мы можем запустить двоичный файл SU (или другое приложение может запустить двоичный файл SU).
Получение root-доступа
Вот тут и вступает root. Двоичный файл SU использует флаги при запуске, чтобы сообщить системе, на какой ID пользователя вы хотите переключиться. Например, если я запускаю бинарный файл SU на моем компьютере с Ubuntu, например, «su Jim -c nano», я буду запускать команду nano как пользователь Jim (после ввода пароля Jim). Если вы запускаете двоичный файл SU без флагов или аргументов, он переключает вас на пользователя root. Обычно вам нужно будет ввести пароль, но, поскольку «root» - неиспользуемый пользователь на Android, у него нет пароля. Выполнение команды «su» переключит вас на пользователя root и назначит вам идентификатор пользователя 0 и поместит вас в корневую группу. Вы теперь Супер Пользователь.
Как суперпользователь вы можете делать что угодно с любым файлом, папкой или разделом на вашем Android. Под чем-либо мы подразумеваем буквально все. Вы можете удалить вредоносные приложения, а также удалить важные системные файлы, которые ломают ваш телефон. Вы также можете делать с аппаратными средствами такие вещи, как изменение частоты процессора и разрушение телефона навсегда.
Root - это супер пользователь, который может делать все что угодно. И мы имеем в виду что угодно.
Приложения могут делать то же самое. SU находится там, где он находится в PATH приложения, и любое приложение может вызвать его и запустить. Это приложение затем имеет права суперпользователя и может делать все что угодно с любым файлом в любом месте на вашем телефоне. Вот почему люди, которые сделали ваш телефон, на самом деле не хотят, чтобы у вас был такой уровень доступа, а компании, которые позволяют разблокировать загрузчик и что-то менять, по-прежнему не размещают двоичный файл SU на вашем телефоне по умолчанию. Наличие root-доступа без возможности контролировать, кто или что может его использовать, опасно для программного обеспечения вашего телефона и ваших личных данных.
Вот почему вам нужно установить приложение, которое вынуждает вас разрешать root-доступ каждый раз, когда вы или другое приложение пытается вызвать разрешения суперпользователя. В большинстве случаев, когда вы используете корневой метод для своего телефона, он будет включен вместе с некоторыми другими полезными двоичными файлами, такими как набор инструментов BusyBox. Если вы сделали что-то вручную, вам нужно будет установить его самостоятельно. SuperSU от Chainfire в Google Play - это хорошее начало.
Шансы и заканчивается
Многие телефоны и некоторые корневые методы делают вещи немного по-другому (Android 4.3 внес много изменений) и требуют сценариев или демона (вы увидите такие слова, как упомянутые daemonsu или su.d) вместо простого удаления двоичного файла SU на месте. Они используются для вызова SubstituteUser, так что вы можете переключиться на пользователя root, как необработанный двоичный метод. Люди, которые выяснили, как получить root права на ваш телефон, разобрались со всем этим, и он будет работать так же на стороне пользователя.
Также возможно «временно-корень» некоторых Android. Это означает, что вы можете иметь права суперпользователя и делать несколько вещей, которые вам нужно сделать, но перезагрузка лишает вас прав доступа root. Точно так же вы можете иметь «shell-root», где вы можете получить доступ к пользователю root только через adb с вашего компьютера.
Наконец, я хочу подчеркнуть, что если у вас возникли эти вопросы, вам нужно подумать, готовы ли вы иметь рутованный Android. Мы не шутили, когда сказали, что легко испортить ваш телефон с помощью доступа SuperUser. Нет причин стыдиться того, что вам нужно немного почитать или задать еще несколько вопросов, прежде чем делать то, что может сломать ваш телефон или дать какое-либо приложение для случайных ружей доступ ко всем вашим данным.
Вот для чего мы здесь.