Root: jak funguje, co znamená a k čemu je dobrý?
- Články
- Karel Kilián
- 10.7.2023
- 22
Uvažovali jste někdy o rootnutí svého telefonu, nebo je tato operace vaším každodenním chlebem? V tomto článku se zkusíme podívat na podstatu a vysvětlit, co to vlastně ten root je a jak funguje.
“Co to vlastně znamená ten root?” To je jedna z častých otázek, vycházející především z řad začátečníků. Pro ostřílené znalce systému je samozřejmě nepochopitelné, že někdo může nevědět “něco tak základního,” nicméně již staré rčení říká, že “Žádný učený z nebe nespadl.” I z tohoto důvodu se pokusíme postupně dopracovat k nějakému smysluplnému vysvětlení.
Root: nejvyšší oprávnění
Než si řekneme, co to ten “root” vlastně je, musíme pochopit důvody jeho existence a princip fungování. Začněme tím, že operační systém Android používá oprávnění na strukturu souborů. Něco podobného můžete znát i z Windows, když systém požaduje právo zapisovat do nějaké složky, případně vám zamezí ve smazání souboru, který považuje za důležitý.
Android vychází z operačního systému Linux, který dlouhé roky zůstával na pokraji scény, přestože některé jeho deriváty byly poměrně konkurenceschopné. Od něj také přebírá systém oprávnění. To v praxi znamená, že každý soubor a každá složka má definovanou sadu oprávnění. Můžete si je představit jako seznam, na kterém je napsáno, kdo má právo soubor číst (to jest jen otevřít a prohlížet, ovšem bez možnosti změnit jeho obsah), zapisovat (tedy provést úpravy a uložit je).
Oprávnění také rozhodují o tom, kdo může v dané složce vytvářet nové soubory a kdo je může (v případě, že se jedná o spustitelný soubor – typicky aplikaci) spouštět. Někteří uživatelé k danému souboru či složce oprávnění mají, jiní nikoli. Uživateli, který oprávnění nemá, je případný pokus o přístup systémem zablokován.
Vraťme se nyní do okamžiku, kdy jste poprvé spustili svůj nový telefon. Během úvodního nastavení probíhá také vytvoření uživatele. Tento uživatel dostává nějaký identifikátor neboli “user ID.” Pokud se k zařízení přihlásí účtem Google jiný uživatel, získá jiný identifikátor. Stejně tak dostane identifikátor uživatele nainstalovaná aplikace. Pod svými ID běží na telefonu také systémové a další procesy. Pokud bychom měli udělat nějaké shrnutí, pak můžeme konstatovat, že cokoli, co může nějakým způsobem pracovat se soubory, vystupuje v systému jako uživatel identifikovaný číslem ID.
Aplikace a jejich “user ID”
Ukažme si to na příkladu. Řekněme, že si nainstalujete aplikaci pro komunikaci přes Internet. Ta dostane při instalaci přiděleno nějaké “user ID.” Současně s tím je jí přidělen prostor v úložišti zařízení, konkrétně v datovém oddílu. Vy jako uživatel máte právo tuto aplikaci spustit. Když aplikace běží, má oprávnění pracovat se svými soubory a složkami.
Aplikace také může požádat o další oprávnění – například k přístupu do adresáře, na paměťovou kartu nebo do knihovny fotografií. Jestliže tyto požadavky schválíte (tj. na Androidu 5.0 a starším odsouhlasíte při instalaci či aktualizaci, od Androidu 6.0 je pak můžete spravovat v nastavení systému), systém ví, že jste aplikaci s určitým ID uživatele udělili povolení přistupovat k daným souborům, což znamená, že může například procházet složky a případně měnit nebo přidávat nové soubory.
Žádná aplikace nemůže přistupovat k žádným souborům, ke kterým nemá oprávnění. To znamená, že například budík nemůže dělat věci, jako prohlížení nastavení databázi nebo otevření složky jiné aplikace. Pro tento režim práce je často používán termín “sandbox” – znamená, že aplikace běží v izolovaném prostoru a “mohou si hrát jen na pískovištích, kam mají povolení ke vstupu.”
Pro soubory, které mohou být spuštěny (tedy nejčastěji aplikace), platí stejný model oprávnění. Vy jako uživatel s určitým ID máte právo nainstalovanou aplikaci spustit. Aplikace nemá možnost spustit jiný program, ke kterému nemá přístup. Pokud jste do systému přidali další uživatele, pak nemají přístup k vašim aplikacím a souborům a naopak.
Nyní si představte systém jako dalšího uživatele. Můžeme říci, že v systému existují soubory, složky a aplikace, které uživatel s vaším ID nemá oprávnění vidět, měnit nebo spouštět. Obvykle tyto části Androidu vyžadují oprávnění na úrovni systému (ID uživatele systém), což vy jako běžný uživatel za normálních okolností nemáte.
Přepínání oprávnění
I když je technicky možné změnit způsob, jakým telefon nastartuje, a souborům, které používá k běhu systému, přiřadit identifikace uživatele se zvýšenými oprávněními, nebylo by to bezpečné ani praktické. Android (a většina systémů založených na platformě UNIX nebo Linux) má něco, co se nazývá uživatel root. Kromě toho podporuje i binárku (malou aplikaci) SubstituteUser pro změnu ID uživatele. Pokud si například nainstalujete Linux na počítač či notebook, budete na něm moci snadno pracovat s nejvyššími oprávněními. Tak proč to nejde na chytrém telefonu či tabletu?
Odpověď je poměrně prostá: nechtějí to výrobci. Nejde přitom o jejich svéhlavé či zlomyslné rozhodnutí, ale především o ochranu systému a vašich dat. Základem ochrany je ve většině případů také to, že binárku SubstituteUser nezahrnují do systému. Tím pádem uživatel nemůže změnit své ID. Další stupně zabezpečení (typicky soubory v zavaděči systému a/nebo samotné jádro operačního systému) se pak starají o to, aby vám zabránily v možnosti změny uživatelské identifikace v rámci SELinuxu (Security-Enhanced Linux).
Někteří výrobci pak přidávají ještě další vrstvu ochrany – příkladem budiž třeba Samsung Knox. Téměř všichni výrobci požadují k pokročilejším operacím takzvané odemknuté bootloaderu.
Cílem je tedy překonat ochrany, čehož dosáhnete buď odemknutím bootloaderu prostřednictvím oficiálních prostředků, nebo neoficiální cestou s použitím nějakého exploitu (bezpečnostního nedostatku).
Pak získáte možnost uložit binárku SU (SubstituteUser) do místa, odkud je možné ji spustit – do složky uložené v proměnné PATH. Pokud je nějaká aplikace uložena v PATH, je možné ji spouštět bez nutnosti zadat přesnou cestu. SU musí být v místě, kde má vaše ID uživatele oprávnění spouštět soubory. Jakákoli jiná aplikace, vyžadující práva roota, pak bude potřebovat tato práva. Jakmile tedy máme uložený patřičný soubor na příslušném místě, můžeme spustit binárku SU, nebo ji může vyvolat jiná aplikace.
Získání práv roota
Dostáváme se k samotné podstatě rootování. Binárka SU používá příznaky, kterými při běhu říká systému, na jaké uživatelské ID chce přepnout. Nahlédněme ještě na chvilku do Linuxu – když na počítači s tímto OS zadáte příkaz su Karel -c nano, bude aplikace nano spuštěna pod uživatelem Karel (po zadání jeho hesla). Jestliže spustíte příkaz su bez jakýchkoli příznaků nebo argumentů, přepne na uživatele root. Za normálních okolností budete v následujícím kroku vyzváni k zadání hesla roota, které jste si zvolili při instalaci systému.
Jenže na Androidu, jak je vám jistě známo, jste heslo roota nikdy nezadávali a tento uživatel je nastaven jako neaktivní. Po zadání su dojde tedy k přepnutí uživatele na root s uživatelským ID 0. Tím se stáváte “super uživatelem,” který si v systému může dělat prakticky cokoli. Jako “super uživatel” máte práva ke všem složkám, souborům a oddílům. Můžete například odstranit aplikace předinstalované výrobcem (“bloatware”), stejně jako jakékoli systémové soubory uložené v zařízení. Můžete také nastavovat některé parametry hardwaru – například měnit taktovací frekvenci procesoru.
Každá mince má dvě strany
Každá mince má ale dvě strany a neomezená práva současně mohou znamenat i velká nebezpečí. Pokud smažete soubor nezbytný pro běh systému, Android nemusí nastartovat nebo se bude chovat nestabilně. Jestliže přetaktujete procesor nad jeho meze, může dojít k přílišnému zahřívání a následnému poškození zařízení.
Podobně se mohou chovat i aplikace, které umí vyvolat a spustit příkaz su. Takový program pak má nejvyšší možná práva a může dělat v telefonu, cokoli se mu zlíbí. To je hlavní důvod, proč výrobci telefonů nedávají uživatelům ve výchozím stavu přístup k oprávněním roota. Proto ani po odemknutí zavaděče nenajdete v systému ve výchozím stavu binárky su. Mít přístup uživatele root bez možnosti kontrolovat, kdo nebo co ho může použít, je nebezpečné jak pro software telefonu, tak především pro vaše osobní údaje.
To je důvod, proč zpravidla jako jeden z kroků během rootování dochází k instalaci aplikace, která hlídá pokusy o přístup s nejvyššími právy a upozorňuje na ně uživatele. Je pak jen na vás, kterému programu tato oprávnění přidělíte, a zda je povolíte jen na omezený čas nebo navždy.
Pro tyto účely je v Obchodě Play hned několik aplikaci. Pouhou instalací aplikace pro správu oprávnění však práva roota nezískáte! Tyto nástroje slouží pouze pro udělování či zakazování přístupu k příkazu su, který musí být na příslušném místě s odpovídajícími právy.
Drobnosti závěrem
Rootování některých telefonů se liší, stejně tak existují různé metody zisku nejvyšších oprávnění – velké změny v tomto směru například přinesl Android 4.3 Jelly Bean. Místo běžného používání binárky su mohou potřebovat speciální skripty nebo démona (daemonsu nebo su.d). Ty se používají k volání SubstituteUser, díky čemuž můžete přepnout na uživatele root podobně jako běžnou metodou su. Z hlediska uživatele se ani tímto nic podstatného nemění.
Na některých modelech lze také určitým postupem získat jen dočasná práva roota – tedy můžete mít nejvyšší oprávnění, udělat jen nezbytné úkoly, ale po restartu se práva roota “ztratí.” Získat oprávnění root lze i přes ADB z počítače.
Na závěr chceme zdůraznit že rootnutí Androidu je třeba důkladně zvážit. V rukách nezkušeného uživatele může dojít až k úplnému znefunkčnění telefonu. Určitě doporučujeme vzít v úvahu všechna rizika, uvážit, jestli nejvyšší oprávnění opravdu využijete, a pečlivě sledovat, kterým aplikacím a z jakého důvodu poskytujete práva roota.
Zdroj: androidcentral.com.
Karel Kilián je zkušený technický redaktor a copywriter s bohatou praxí v oblasti informačních a komunikačních technologií. Jeho kariéra začala na pozici prodavače, odkud postupně… více o autorovi
Komentáře (22)
Přidat komentář