Kazalo:
Radi imamo vprašanja. Vedno je dobro, ko si lahko pomagamo in se naučimo stvari, ko iščemo odgovore. Čeprav ne najdemo časa, da bi odgovorili na vse, se včasih zastavlja določeno vprašanje, ki si zasluži natančen odgovor.
"Kaj pomeni koren?" je eno izmed teh vprašanj. Koncept je za nekatere od nas morda preprost, toda za številne ljudi, ki se niso več preživljali, ko so se ukvarjali z Androidom ali katerim koli drugim operacijskim sistemom, ki temelji na dovoljenjih, je nekaj, o čemer bi lahko spraševali. Poskušal bom odgovoriti na vse, kar lahko.
Dovoljenja
Preden določimo root, je pomembno razumeti, zakaj obstaja in kako deluje. Ker Android uporablja dovoljenja (natančneje dovoljenja za Linux) v strukturi datotek. Vsaka datoteka, vsaka mapa in vsaka particija ima nabor dovoljenj. Ta dovoljenja določajo, kdo lahko prebere datoteko (poglejte ali do nje dostopate do njih, ne da bi jih spreminjali), zapišete v datoteko (lahko spremenite vsebino te datoteke ali ustvarite novo datoteko v mapi ali particiji) in izvršite datoteko (zaženite datoteko, če gre za vrsto, ki se lahko zažene, na primer aplikacija). To se opravi na podlagi uporabnikov in dovoljenj - nekateri uporabniki imajo dostop, medtem ko uporabniki, ki nimajo pravih dovoljenj, nimajo dostopa.
Ko prvič nastavite telefon in ga prvič vklopite, vam dodeli ID uporabnika. Če se drug uporabnik prijavi prek Googla, mu dodeli drug uporabniški ID. Ko je v telefonu nameščena aplikacija, ji dodelite tudi uporabniški ID. Sam sistem je uporabnik in drugi procesi, ki jih je treba teči v vašem telefonu, imajo lahko svoj ID uporabnika. Uporabnik je vse, kar lahko naredi vse datoteke v vašem Androidu.
S sistemom uporabnikov in dovoljenj Android spremlja, kdo lahko kaj naredi.
Recimo, da namestite aplikacijo za sporočila. Ko ga namestite, mu dodelite uporabniški ID. Prav tako dobi mesto na svoji lastni particiji podatkov, do katere ima samo dostop. Imate dovoljenja za izvajanje aplikacije in ko se aplikacija zažene, ima dovoljenje za dostop do lastne podatkovne mape in datotek. Aplikacija lahko zahteva tudi dovoljenje za dostop do stvari, kot so vaš adresar ali kartica SD ali knjižnica fotografij. Če tem zahtevam rečete pritrdilno (ali če se strinjate z dovoljenji za starejše različice Androida), ID uporabnika aplikacije dobi dovoljenje za podatkovne datoteke teh stvari, kar pomeni, da lahko pogleda podatkovno mapo in njeno vsebino ter po možnosti spremeni jih ali dodajte nove datoteke. Aplikacija ne more dostopati do podatkovnih datotek, na katere nima dovoljenja za ogled. To pomeni (v našem primeru) ne more delati stvari, kot je ogled podatkovne baze nastavitev ali dostop do podatkovne mape druge aplikacije. Za to se pogosto uporablja izraz peskovnik - aplikacije so v peskovniku in se lahko igrajo le v peskovnikih, v katerih imajo dovoljenje.
Za datoteke, ki so programi in se lahko zaženejo (kot aplikacije), velja isti model dovoljenj. Vaš uporabniški ID ima dovoljenje za zagon aplikacij, ki ste jih namestili, ko ste prijavljeni. Sistemski uporabnik ima dovoljenje za zagon in drugi uporabniki na sistemski ravni imajo lahko dostop do aplikacij ali določenih procesov, ki jih aplikacije uporabljajo. Druge aplikacije ne morejo zagnati aplikacij, ki nimajo dovoljenja za zagon. Če ste dodali sekundarnega uporabnika, nimajo dostopa do vaših aplikacij ali datotek in obratno. V telefonu so datoteke, mape in aplikacije, za katere vaš ID uporabnika nima dovoljenja za ogled, spreminjanje ali zagon. Ti deli sistema Android običajno zahtevajo dovoljenja na sistemski ravni (sistemski uporabnik ID), da se lahko ukvarjajo s čim, in niste uporabnik sistema ali uporabnik, ki ima dovoljenja na ravni sistema.
Preklapljanje dovoljenj
Čeprav je tehnično mogoče spremeniti način zagona telefona in datoteke, ki jih uporablja za zagon delujočega sistema in dodelitev uporabniškega ID-ja zvišanih dovoljenj, to ni varno niti praktično. Toda Android (in večina sistemov, ki temeljijo na Unixu ali Linuxu) imajo korenski uporabnik in podpirajo binarno datoteko SubstituteUser (pomislite na binarno datoteko kot na majhno aplikacijo), da spremenite uporabniške ID-je. Te se uporabljajo za upravljanje sistema na osnovni ravni.
Ker ljudje, ki so napravili vaš telefon, ne želijo, da imate enostaven dostop do ID-ja korenskega uporabnika - in niso vsi razlogi sebični, ker ščiti tudi vas in vaše zasebne podatke - binarna različica SubstituteUser ni vključena v večino različic Android. Brez SubstituteUser ne moremo zamenjati svojega uporabniškega ID-ja. Večina stvari na sistemski ravni v Androidu je mimogrede podobna lahka imena. Osrednja zaščita (datoteke v zagonskem nalagalniku in / ali samem jedru) so prav tako zgrajena tako, da vam preprečujejo preklapljanje uporabniških ID-jev kot dela SELinux-a (S ecurity - E nhanced Linux - povedala vam je, da so imena enostavna) modul jedra. Nekateri telefoni (Samsungov Knox prihaja na misel) imajo dodatne zaščite, skoraj vsa podjetja, ki izdelujejo Androide, pa zahtevajo, da se za zagon sprememb odstrani zagonski nalagalnik, da se te datoteke lahko spremenijo in omogočajo menjavo ID-jev uporabnikov. Nekateri telefoni, kot je BlackBerry Priv, gredo še korak dlje in se ne bodo zagnali, če bomo kaj spremenili (tudi če bi lahko).
Če želite postati root, potrebujete način za spremembo uporabniškega ID-ja.
Ko bomo premagali vse to - bodisi z odklepanjem zagonskega nalagala s pooblaščenimi sredstvi bodisi s pomočjo kakšnega izkoriščanja - lahko postavimo SU binarno datoteko (SubstituteUser) na mesto, ki ga lahko zažene, ko ga pokličemo, da teče - to se imenuje PATH. Če je v PATH-ju vašega uporabniškega programa katera koli aplikacija, se bo zagnala, ne da bi sistem natančno povedal, kje je. Prepričati se morate tudi, da se binarni program SU nahaja na mestu, kjer ima vaš uporabniški ID dovoljenje za izvajanje (zagon) datotek. Vsaka druga aplikacija (Google Play ima veliko aplikacij, ki potrebujejo korenska dovoljenja) bo prav tako potrebovala enak dostop. Ko uporabljate metodo za izkoreninjenje telefona, vse to razvrstite ljudje, ki so zgradili korensko metodo.
Ko je vse, kar je na mestu, lahko zaženemo dvojiško različico SU (ali druga aplikacija lahko zažene dvojiško različico SU).
Pridobivanje korenskega dostopa
Tukaj prihaja root. Binarni program SU uporablja zaznamke, ko sistemu sporoča, na kateri uporabniški ID želite preklopiti. Na primer, če na svojem računalniku Ubuntu vodim binarno različico SU, kot je ta "su Jim -c nano", bom ukaz izvajal kot uporabnik Jim (po predložitvi gesla za Jim). Če vodite binarni program SU brez zastavic ali argumentov, vas preklopi na korenskega uporabnika. Običajno bi morali vnesti geslo, a ker je "root" neuporabljen uporabnik v sistemu Android, nima gesla. Izvajanje ukaza "su" vas bo preklopilo v uporabniški koren in vam dodelilo ID uporabnika 0 in vas postavilo v korensko skupino. Zdaj ste super uporabnik.
Kot Super Uporabnik lahko storite karkoli v kateri koli datoteki, mapi ali particiji na vašem Androidu. S čimerkoli mislimo dobesedno karkoli. Odstranite lahko programske opreme, poleg tega pa lahko odstranite tudi osnovne sistemske datoteke, ki pokvarijo vaš telefon. Prav tako lahko storite strojno opremo, na primer spremenite frekvenco procesorja in za vedno pokvarite telefon.
Root je super uporabnik, ki lahko naredi karkoli. In mislimo karkoli.
Aplikacije lahko storijo isto. SU je postavljen tam, kjer je v aplikaciji PATH, in vsaka aplikacija ga lahko pokliče in zažene. Aplikacija ima nato dovoljenja za super uporabnike in lahko v kateri koli datoteki v telefonu naredi vse, kar ji je všeč. Zato ljudje, ki so napravili vaš telefon, resnično ne želijo, da imate to raven dostopa, in podjetja, ki vam omogočajo, da odklenete zagonski nakladalec in spremenite stvari, še vedno ne postavljajo binarne različice SU na vaš telefon. Če imate dostop do korenskega sistema, ne da bi nadzirali, kdo ali kaj lahko uporablja, je nevaren za programsko opremo in vaše osebne podatke.
Zato morate namestiti aplikacijo, ki vam prisili, da dovolite korenski dostop kadar koli ali druga aplikacija poskusi uveljaviti dovoljenja Super uporabnika. Večina primerov, ko uporabljate korensko metodo za svoj telefon, bo vključena ena, skupaj z nekaterimi drugimi uporabnimi dvostranskimi datotekami, kot je na primer orodje BusyBox. Če ste stvari delali ročno, jih boste morali sami namestiti. SuperSU by Chainfire v Googlu Play je dobro začeti.
Kvote in konci
Številni telefoni in nekateri korenski načini delajo nekoliko drugače (Android 4.3 je prinesel veliko sprememb) in zahtevajo skripte ali daemon (videli boste besede, kot sta omenjena daemonsu ali su.d), namesto da bi preprosto spustili dvojiško različico SU. Uporabljajo se za klic SubstituteUser, tako da lahko preklopite na korenskega uporabnika tako kot surovi binarni način. Ljudje, ki so ugotovili, kako izkoreniniti telefon, so vse to razvrstili in na uporabniški strani bo delovalo enako.
Mogoče je tudi "temp-root" nekaterih androidov. To pomeni, da lahko imate dovoljenja Super Uporabnika in naredite nekaj, kar morate storiti, vendar pa ponovni zagon odvzame korenski dostop. Prav tako lahko imate "root-root", do katerega lahko do korenskega uporabnika dostopate samo prek adb iz računalnika.
Na koncu želim poudariti, da če imate vprašanja, morate razmisliti, ali ste pripravljeni na zakoreninjeni Android. Nismo se šalili, ko smo rekli, da je enostavno uničiti telefon z dostopom SuperUserja. Ni razloga, da vas bo sram, da morate malo brati ali postaviti nekaj dodatnih vprašanj, preden naredite stvari, ki lahko pokvarijo vaš telefon ali dajo neki naključni aplikaciji rouge dostop do vseh vaših podatkov.
Za to smo tukaj.