Зміст:
Ми любимо отримувати ваші запитання. Це завжди добре, коли ми можемо допомогти один одному, і ми самі вчимось речі, шукаючи відповіді. Хоча ми не можемо знайти часу, щоб відповісти на всі них, іноді виникає певне питання, достатньо, щоб воно заслуговувало детальної відповіді.
"Що означає корінь?" - одне з таких питань. Концепція для когось із нас може бути простою, але для багатьох людей, які не витрачали часу на те, щоб обмінятись Android або будь-якою іншою операційною системою на основі дозволів, варто щось задати. Я спробую відповісти на них якнайкраще.
Дозволи
Перш ніж визначити корінь, важливо зрозуміти, чому він існує і як він працює. Це тому, що Android використовує дозволи (точні на основі Linux) у структурі файлів. Кожен файл, кожна папка та кожен розділ мають набір дозволів. Ці дозволи вирішують, хто може прочитати файл (переглянути або отримати доступ до вмісту, не змінюючи їх), записати у файл (мати змогу змінити вміст цього файлу або створити новий файл у папці чи розділі) та виконати файл (запустіть файл, якщо це тип, який можна запустити, як додаток). Це робиться на основі користувачів та дозволів - певні користувачі мають доступ, тоді як користувачі, які не мають правильних дозволів, не мають доступу.
Коли ви вперше налаштували телефон і ввімкнули його вперше, вам призначається ідентифікатор користувача. Якщо інший користувач входить через Google, йому присвоюється інший ідентифікатор користувача. Коли програма встановлена на вашому телефоні, їй також присвоюється власний ідентифікатор користувача. Сама система - це користувач, і інші процеси, які потрібно запустити на вашому телефоні, можуть мати власний ідентифікатор користувача. Все, що може зробити що-небудь з будь-якими файлами на вашому Android - це користувач.
Система користувачів та дозволів - це те, як Android відстежує, хто що може робити.
Скажімо, ви встановили додаток для обміну повідомленнями. Під час встановлення йому присвоюється ідентифікатор користувача. Він також отримує місце у власному розділі даних, до якого має доступ лише той. У вас є дозволи на виконання програми, і коли програма запускається, вона має дозвіл на доступ до власної папки даних та файлів. Додаток може також вимагати дозволу на доступ до таких речей, як адресна книга чи SD-карта чи бібліотека фотографій. Якщо ви скажете "так" цим запитам (або якщо ви погоджуєтесь з дозволами на більш старих версіях Android), ідентифікатор користувача додатка надає дозвіл на файли даних цих речей, тобто він може переглянути папку даних та її вміст і, можливо, змінити їх або додати нові файли. Додаток не може отримати доступ до файлів даних, на які не має дозволу "дивитися". Це означає (у нашому прикладі), що він не може робити такі речі, як перегляд бази даних налаштувань або доступу до папки даних іншої програми. Для цього часто використовується термін «пісочниця» - програми розміщуються в пісочному режимі і можуть грати лише в тих пісочницях, на які вони мають дозвіл.
Для файлів, які є програмами і можуть працювати (як додатки), застосовується та ж модель дозволу. Ваш ідентифікатор користувача має дозвіл на запуск застосованих вами програм під час входу. Користувач системи має дозвіл на запуск їх, а інші користувачі системного рівня можуть мати доступ до програм або певних процесів, якими користуються програми. Інші програми не можуть запускати програми, у яких немає дозволу на запуск. Якщо ви додали другорядного користувача, він не має доступу до ваших додатків або файлів, і навпаки. На вашому телефоні є файли, папки та додатки, у яких ваш ідентифікатор користувача не має дозволу на перегляд, зміну чи запуск. Зазвичай для цих частин Android потрібні дозволи на системному рівні (ідентифікатор користувача системи), щоб робити що-небудь, і ви не користувач системи чи користувач, який має дозволи на рівні системи.
Перемикання дозволів
Хоча технічно можливо змінити спосіб завантаження вашого телефону та файли, які він використовує для запуску запущеної системи та присвоєння вашим ідентифікатором користувачів підвищених дозволів, це не є безпечним і практичним. Але Android (і більшість систем на базі Unix або Linux) мають те, що називається кореневим користувачем, і підтримують бінарний файл SubstituteUser (думайте про бінарне як про маленьке додаток) для зміни ідентифікаторів користувачів. Вони використовуються для адміністрування системи на базовому рівні.
Оскільки люди, які створили ваш телефон, не хочуть, щоб ви мали легкий доступ до ідентифікатора кореневого користувача - і не всі причини корисливі, оскільки це також захищає вас і ваші особисті дані - бінарний файл SubstituteUser не входить до більшості версій Android. Без SubstituteUser ми не можемо переключити свій ідентифікатор користувача. Більшість речей системного рівня в Android, до речі, мають подібні легкі імена. Основна безпека (файли у завантажувачі та / або в самому ядрі) також побудована таким чином, щоб не дозволяти вам перемикати ідентифікатори користувачів як частина SELinux (S ecurity - E nhanced Linux - сказав вам, що імена прості) модуль ядра. Деякі телефони (на думку «Samsung Knox») мають додатковий захист, і майже всі компанії, які виробляють Androids, вимагають, щоб для внесення змін завантажувач потрібно було розблокувати, щоб ці файли могли бути змінені і дозволяти вам змінювати ідентифікатори користувачів. Деякі телефони, як-от BlackBerry Priv, навіть йдуть на крок далі і не збираються завантажуватися, якщо ми щось змінимо (навіть якщо б могли).
Щоб стати root, вам потрібен спосіб змінити свій ідентифікатор користувача.
Як тільки ми пройдемо все це - або розблокувавши завантажувач за допомогою дозволених засобів, або використовуючи якийсь експлуататор, - ми можемо розмістити бінарний SU (SubstituteUser) на місці, яке воно може працювати, коли його викликають для запуску - це називається ПАТ. Якщо будь-яка програма є у PATH вашого ідентифікатора користувача, вона запуститься, не повідомляючи системі, де саме вона знаходиться. Вам також потрібно переконатися, що бінарний код SU знаходиться в тому місці, коли ваш ідентифікатор користувача має дозвіл на виконання (запуск) файлів. Будь-який інший додаток (Google Play має безліч додатків, яким потрібні кореневі дозволи) також потребуватиме однакового доступу. Коли ви використовуєте метод для кореневого використання телефону, все це впорядковується людьми, які побудували кореневий метод.
Після того, як все на місці, ми можемо запустити бінарний SU (або інша програма може запустити SU-файл двійкових).
Отримання кореневого доступу
Тут надходить корінь. Бінарний SU використовує прапори під час запуску, щоб повідомити системі, на який ідентифікатор користувача ви хочете перейти. Наприклад, якщо я запускаю бінарний SU на своєму комп'ютері Ubuntu на зразок цього "su Jim -c nano", я запускаю команду nano як користувач Джим (після введення пароля Джима). Якщо ви запускаєте бінарний SU без прапорців і аргументів, він переключає вас на root користувача. Зазвичай вам потрібно буде ввести пароль, але оскільки "root" є невикористаним користувачем на Android, він не має пароля. Виконання команди "su" переключить вас на користувальницький корінь та призначить вам ідентифікатор користувача 0 і помістить вас у кореневу групу. Ви тепер Супер Користувач.
Як Супер Користувач, Ви можете робити що завгодно будь-який файл, папку чи розділ на Android. Ми маємо на увазі буквально що завгодно. Ви можете видалити програмні програми, а також видалити основні системні файли, які порушують ваш телефон. Ви також можете робити такі засоби, як змінити частоту процесора та назавжди зруйнувати телефон.
Root - це суперкористувач, який може робити все, що завгодно. І ми маємо на увазі що завгодно.
Програми можуть робити те саме. SU розміщується там, де він знаходиться в додатку PATH, і будь-яка програма може викликати його та запустити його. Тоді ця програма має дозволи супер користувача, і вона може робити все, що завгодно, у будь-якому файлі в будь-якому місці вашого телефону. Ось чому люди, які зробили ваш телефон, дійсно не хочуть, щоб у вас був такий рівень доступу, а компанії, які дозволяють вам розблокувати завантажувач і змінити речі, досі не розміщують бінарний SU на вашому телефоні за замовчуванням. Доступ до кореневого доступу, який не дозволяє контролювати, хто чи що може ним використовувати, небезпечний для програмного забезпечення та ваших особистих даних.
Ось чому вам потрібно встановити додаток, який змушує вас дозволити root отримати доступ у будь-який час, коли ви чи інша програма намагатиметься викликати дозволи Super User. У більшості випадків, коли ви використовуєте кореневий метод для свого телефону, буде включений один, а також деякі інші корисні бінарні файли, такі як набір інструментів BusyBox. Якщо ви робили щось вручну, вам потрібно буде встановити його самостійно. SuperSU від Chainfire в Google Play - це добре для початку.
Обривки
Багато телефонів і деякі кореневі методи роблять щось трохи інакше (Android 4.3 приніс багато змін) і вимагає сценаріїв або демон (ви побачите такі слова, як згадані daemonsu або su.d), а не просто відкидати бінарний SU на місце. Вони використовуються для виклику SubstituteUser, щоб ви могли перейти до кореневого користувача так само, як і необроблений бінарний метод. Люди, які зрозуміли, як викорінити ваш телефон, розібрали все це, і це буде працювати так само на стороні користувача.
Можливо також "темп-корінь" деяких андроїдів. Це означає, що ви можете мати дозволи супер користувача та виконувати декілька речей, які вам потрібно зробити, але перезавантаження відбирає кореневий доступ. Так само у вас може бути "root-root", куди ви можете отримати доступ до кореневого користувача лише через adb зі свого комп'ютера.
Нарешті, я хочу наголосити, що якщо у вас виникли ці питання, вам слід розглянути, чи готові ви мати вкорінений Android. Ми не жартували, коли сказали, що легко зруйнувати телефон за допомогою доступу SuperUser. Немає причин соромитися того, що вам потрібно трохи почитати або задати ще кілька питань, перш ніж робити речі, які можуть зламати ваш телефон або надати деяким випадковим програмам доступ до всіх ваших даних.
Ось для чого ми тут.