Indholdsfortegnelse:
Vi elsker at få dine spørgsmål. Det er altid en god ting, når vi kan hjælpe hinanden, og vi lærer ting selv, når vi leder efter svarene. Selvom vi ikke kan finde tid til at besvare dem alle, kommer nogle gange et bestemt spørgsmål op til, at det fortjener et detaljeret svar.
"Hvad betyder rod?" er et af disse spørgsmål. Konceptet kan være enkelt for nogle af os, men for mange mennesker, der ikke har brugt tid på at fikle med Android eller andre tilladelsesbaserede operativsystemer, er det noget at stille spørgsmål til. Jeg vil prøve at besvare dem alle så godt jeg kan.
Tilladelser
Før vi definerer rod, er det vigtigt at forstå, hvorfor den findes, og hvordan den fungerer. Det skyldes, at Android bruger tilladelser (Linux-baserede tilladelser, for at være nøjagtige) i filstrukturen. Hver fil, hver mappe og hver partition har et sæt tilladelser. Disse tilladelser bestemmer, hvem der kan læse en fil (se på eller få adgang til indholdet uden at ændre dem), skrive til en fil (være i stand til at ændre indholdet af den fil, eller oprette en ny fil i en mappe eller partition) og udføre en fil (kør filen, hvis det er en type, der kan køres, som en app). Dette gøres baseret på brugere og tilladelser - visse brugere har adgang, mens brugere, der ikke har de rigtige tilladelser, er blokeret fra at have adgang.
Når du først konfigurerer din telefon og tænder den for første gang, får du et bruger-ID. Hvis en anden bruger logger på via Google, tildeles de et andet bruger-ID. Når en app er installeret på din telefon, tildeles den også et eget bruger-id. Selve systemet er en bruger, og andre processer, der skal køres på din telefon, kan have deres eget bruger-ID. Alt, hvad der kan gøre noget for enhver fil på din Android, er en bruger.
Et system med brugere og tilladelser er, hvordan Android holder styr på, hvem der kan gøre hvad.
Lad os sige, at du installerer en meddelelsesapp. Det får tildelt et bruger-id, når du installerer det. Det får også et sted på din datapartition af sin egen, som kun den har adgang til. Du har tilladelser til at køre appen, og når appen kører, har den tilladelse til at få adgang til sin egen datamappe og filer. Appen kan også anmode om tilladelse til at få adgang til ting som din adressebog eller SD-kort eller fotobibliotek. Hvis du siger ja til disse anmodninger (eller hvis du accepterer tilladelserne på ældre versioner af Android), får appens bruger-ID tilladelse til datafilerne for disse ting, hvilket betyder, at den kan se på datamappen og dens indhold og muligvis ændre dem eller tilføj nye filer. Appen har ikke adgang til nogen datafiler, den har ikke tilladelse til at "se" på. Det betyder (i vores eksempel) at det ikke kan gøre ting som at se på indstillingsdatabasen eller få adgang til datamappen i et andet program. Udtrykket sandkasse bruges ofte til dette - apps er sandkasser og kan kun afspilles i de sandkasser, de har tilladelse til at være i.
For filer, der er programmer og kan køre (som apps), gælder den samme tilladelsesmodel. Dit bruger-id har tilladelse til at køre de apps, du installerede, mens du er logget ind. Systembrugeren har tilladelse til at køre dem, og andre brugere på systemniveau kan have adgang til apps eller bestemte processer, som apps bruger. Andre apps kan ikke starte apps, de har ikke tilladelse til at starte. Hvis du tilføjede en sekundær bruger, har de ikke adgang til dine apps eller filer og vice versa. Der er filer, mapper og apps på din telefon, som dit bruger-id ikke har tilladelse til at se, ændre eller køre. Normalt kræver disse dele af Android tilladelser på systemniveau (systembruger-ID) til at gøre noget med, og du er ikke systembrugeren eller en bruger, der har tilladelser på systemniveau.
Skift tilladelser
Selvom det teknisk set muligvis er at ændre den måde, din telefon starter op og de filer, den bruger til at starte køresystemet og tildele dine bruger-ID forhøjede tilladelser, er det hverken sikkert eller praktisk. Men Android (og de fleste Unix- eller Linux-baserede systemer) har det, der kaldes en root-bruger, og understøtter SubstituteUser-binæren (tænk på en binær som en lille app) til at ændre bruger-id'er. Disse bruges til at administrere systemet på kerneniveau.
Fordi de mennesker, der har oprettet din telefon, ikke ønsker, at du skal have let adgang til root-bruger-ID - og ikke alle grundene er egoistiske, fordi det også beskytter dig og dine private data - binæren SubstituteUser er ikke inkluderet i de fleste builds af Android. Uden substitutUser kan vi ikke skifte vores bruger-id. De fleste ting på systemniveau i Android har for øvrig lignende lette navne. Kernesikkerheden (filer i bootloader og / eller selve kernen) er også bygget på en måde, der forhindrer dig i at skifte bruger-id'er som en del af SELinux (S ecurity- E nanced Linux - fortalte dig, at navnene er nemme) kernemodul. Nogle telefoner (Samsungs Knox kommer til at tænke på) har yderligere beskyttelse, og næsten alle virksomheder, der fremstiller Androids, kræver, at for at foretage ændringer, skal bootloader'en låses op, så disse filer kan ændres og giver dig mulighed for at skifte bruger-id. Nogle telefoner, som BlackBerry Priv, går endda et skridt videre og vil ikke starte op, hvis vi ændrer noget (selvom vi kunne).
For at blive rod, har du brug for en måde at ændre dit bruger-ID på.
Når vi først er kommet forbi alt dette - enten ved at låse op bootloaderen gennem godkendte midler eller ved hjælp af en slags udnyttelse - kan vi placere SU binæren (SubstituteUser) på et sted, som det kan køre, når det kaldes at køre - det kaldes en PATH. Hvis der findes en app i dit bruger-ID's PATH, kører den uden at fortælle systemet nøjagtigt, hvor det er. Du skal også sikre dig, at SU-binæren er et sted, at dit bruger-ID har tilladelse til at udføre (køre) filer. Enhver anden app (Google Play har masser af apps, der har brug for rodtilladelser) har også brug for den samme adgang. Når du bruger en metode til at rodfæste din telefon, sorteres alt dette af de mennesker, der har opbygget rodmetoden.
Når alt det der er på plads, kan vi køre SU binært (eller en anden app kan køre SU binært).
Få rodadgang
Det er her rod kommer ind. SU-binæren bruger flag, når det køres for at fortælle systemet, hvilket bruger-ID du vil skifte til. For eksempel, hvis jeg kører SU binært på min Ubuntu-computer som denne "su Jim -c nano", kører jeg nano-kommandoen som brugeren Jim (efter at have givet Jim's adgangskode). Hvis du kører SU binært uden flag eller argumenter, skifter det dig til rodbrugeren. Normalt skal du angive en adgangskode, men da "root" er en ubrugt bruger på Android har den ingen adgangskode. Når du kører kommandoen "su", skifter du til brugerroten og tildeler dig bruger-id'et 0 og placerer dig i rodgruppen. Du er nu Superbrugeren.
Som Superbruger kan du gøre alt for enhver fil, mappe eller partition på din Android. Med noget som helst menes vi bogstaveligt talt alt. Du kan fjerne bloatware-apps, og du kan også fjerne vigtige systemfiler, der ødelægger din telefon. Du kan også gøre tingene til hardwaren, som at ændre CPU-frekvensen og ødelægge din telefon for evigt.
Root er superbrugeren, der kan gøre alt. Og vi mener noget.
Apps kan gøre det samme. SU er placeret, hvor det er i applikationen PATH, og enhver app kan kalde det og køre det. Denne app har derefter Super User-tilladelser, og kan gøre alt, hvad den kan lide, til enhver fil ethvert sted på din telefon. Dette er grunden til, at de mennesker, der har oprettet din telefon, virkelig ikke ønsker, at du skal have dette adgangsniveau, og de virksomheder, der giver dig mulighed for at låse op startlæseren og ændre ting, placerer stadig ikke SU-binæren på din telefon som standard. At have rodadgang uden nogen måde at kontrollere, hvem eller hvad der kan bruge det, er farligt for telefonens software og dine personlige data.
Derfor er du nødt til at installere en app, der tvinger dig til at tillade root-adgang, hver gang du eller en anden app forsøger at påberåbe sig Superbruger-tilladelser. De fleste gange, når du bruger en rodmetode til din telefon, vil en blive inkluderet sammen med nogle andre nyttige binære filer som BusyBox værktøjssæt. Hvis du gjorde ting for hånd, skal du selv installere en. SuperSU by Chainfire i Google Play er en god en til at starte med.
Odds og ender
Mange telefoner og nogle rodmetoder gør tingene lidt anderledes (Android 4.3 bragte en masse ændringer) og kræver scripts eller en dæmon (du vil se ord som daemonsu eller su.d nævnt) i stedet for bare at droppe SU binæren på plads. Disse bruges til at kalde SubstituteUser, så du kan skifte til rodbrugeren ligesom den rå binære metode. De mennesker, der har fundet ud af, hvordan du rodder din telefon, har sorteret alt dette, og det vil fungere det samme på den brugervendte side.
Det er også muligt at "temp-root" nogle Androids. Dette betyder, at du kan have Super User-tilladelser og gøre et par ting, du skal gøre, men en genstart fjerner rodadgang væk. Ligeledes kan du have en "shell-root", hvor du kun kan få adgang til rodbrugeren via adb fra din computer.
Endelig vil jeg understrege, at hvis du havde disse spørgsmål, skal du overveje, om du er klar til at have en rodfæstet Android. Vi græd ikke, da vi sagde, det var let at ødelægge din telefon med SuperUser-adgang. Der er ingen grund til at skamme sig over, at du har brug for at læse lidt eller stille et par flere spørgsmål, før du gør ting, der kan ødelægge din telefon eller give en tilfældig rouge-app adgang til alle dine data.
Det er hvad vi er her for.