Root: Unterschied zwischen den Versionen

Aus Android Wiki
(Die Seite wurde neu angelegt: „== Root unter Unix-Systemen ==<br/><br/>Das Root - Konto im Unix - artigen Sysem wie z. B. Ubuntu wird nur für die Installation des entsprechenden Systems genutz…“)
 
 
(104 dazwischenliegende Versionen von 35 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Root unter Unix-Systemen ==<br/><br/>Das Root - Konto im Unix - artigen Sysem wie z. B. Ubuntu wird nur für die Installation des entsprechenden Systems genutzt. Wie ich einmal gelesen habe, dass man bei einer Standard - mäßigen Ubuntu - Instalation das Root kennwort nicht mitbekommt, ist natürlich quatsch. Das Benutzerkonto was man bei der Installation angibt, ist befähigt, Root Rechte zu erlangen, wenn man das Passwort dafür eingibt.<br/>Standardmäßig sind diese Rechte deaktivert, was bedeutet, dass der Benutzer (oder aber auch die evtl. schadsoftware) keine tiefgreifenden Systemänderungen vornehmen darf, ohne vorher die Identität gewechselt zu haben.<br/>Unter Linux ist es deshalb ratsam, ein primäres Benutzerkonto anzulegen, das keine rott Rechte erlangen kann und darf. Nur für Aktionen die Einstellungen am system ändern sollte man den Benutzer wechseln.<br/><br/>=== Wechseln der Identität ===<br/><br/>Unter Ubuntu kann man die Identität jederzeit bei Aktionen, die Root Rechte erfordern, wechseln. Aktionen, die Root Recht verlangen, sind zum Beispiel die Instalation eines Programmes oder die Aktualisierung eines Treibers für ein neues Gerät. Aber auch Eingriffe von schadsoftware in das System verlangen Root Rechte. Daraus lässt sich schließen, dass der benutzer nach dem Passwort für sein Benutzerkonto unter Root gefragt wird. Um dies zu vermeiden, gibt man das Root Passwort nur ein, wenn es auch klar ist, welches Programm nun diese Rechte fordert.<br/>Im Terminal wechselt man in den Root, indem vor dem eigentlichen Befehl ein "su" (für: superuse) eingibt. Alternativ führt der befehl "sudo" zum gleichen Erfolg.<br/><br/><br/>== Root unter Android ==<br/><br/>Unter [[Android]] gibt es keine Benutzerkonten - Verwaltung, wie sie von PC Betriebssystemen bekannt sind.<br/>Der Nutzer, der vor dem [[Smartphone]] sitzt, hat im System keine Identität.<br/>Er wechselt von Anwendung zu Anwendung, denen die erforderlichen Rechte bei der Instalation zugesagt wurden. Der Benutzer übernimmt also die Identität von den einzelnen Anwendungen.<br/><br/>=== Rechteverwaltung Android ===<br/><br/>Android gilt als Unix - artiges System als sicheres Smartphone - Betriebssystem. Aber wie kann es sein, dass ein kleines OS (Operating system, Betriebssystem) sicherer ist, als ein auf dem PC installiertes Windows.<br/>Nun, dass kommt vor allem auf die Rechteverwaltung in Android an. Um eine App installieren zu können, müssen vor dem Herunterladen aus dem [[Android Market]] bestimmte Rechte gewährt werden, die die App zum arbeiten benötigt. Jede App kann nur auf die Telefonfunktionen zugreifen, die Sie auch bei der Installation oder beim Update angegeben hat.<br/>Nun stellt sich natürlich die Frage, wer denn angibt, welche Rechte eine App besitzen darf. Diese Frage lässt sich ganz einfach beantworten - der Programmierer der App. Bringt jetzt keinen Schritt weiter, stimmts?<br/>Aber es ist ziemlich simpel das Prinzip (einfach und genial):<br/>[[File:Superuser.png|thumb|Anfrage nach Superuser Rechten]]<br/>Der Programmierer einer App legt in eine Datei namens '''AndroidManifest.xml''' an. Diese Datei beinhaltet neben den Informationen zur App auch noch die Berechtigungen, die diese benötigt. Aus dieser MANIFEST Datei übernimmt Android und der Market dann die Berechtigungen, die der Benutzer bestätigen muss.<br/>Nehmen wir also an, ein Programmierer für Schadsoftware will, dass die App Zugriff auf das Senden und Empfangen von SMS hat. Dann muss dieser Programmierer dieses Recht in die AndroidManifest.xml eintragen, damit dieses Recht am Telefon gewährt wrid. Es ist also nicht möglich, seiner App eine Berechtigung zu geben, ohne dieses vorher in der MANIFEST Datei erwähnt zu haben. Dadurch wird eine sichere Verwendung von Android möglich.<br/><br/>=== Root für Android ===<br/><br/>Nun kommen wir aber zum Root unter Android und wie dieses gewährt wird. Denn die MANIFEST Datei sieht solch einen Root Zugriff nicht vor und es gibt dafür auch keinen Befehl, den man da eintragen könnte.&lt;br&gt;<br/>Also, wie kann man einer App Root Rechte gewähren?&lt;br&gt;<br/>Dazu wird bei dem sogenannten rooten des Telefons ein Script in den system Pfad gelegt, der es erlaubt, diese System-partition als schreibbar zu [[Mounten]]. Dafür wird ebenfalls eine App installiert, die [https://market.android.com/details?id=com.noshufou.android.su&feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5ub3NodWZvdS5hbmRyb2lkLnN1Il0. Superuser] genannt wird. Das ist die GUI für die Verwaltung von Root Rechten ("superuser" - Rechte).&lt;br&gt;<br/>Startet der User jetzt eine App, wird er gefragt, ob er ihr die erforderlichen Root Rechte gewähren möchte, oder nicht. Die Auswahl lässt sich von der Superuser App für Anfragen in der Zukunft speichern.&lt;br&gt;<br/>In den Einstellungen ist es ebenfalls möglich, die Root Rechte dauerhaft zu verweigern oder zu gewähren.<br/>Diese Funktionen sollten dennoch mit Vorsicht genossen werden, denn ein Fehler und es kann zu ungewollten Effekten führen, die mit nur Mühe wieder zu behebn sind.<br/><br/><br/>=== Wofür braucht man Root ===<br/><br/>Wöfür wird denn nun Root unter Android eigentlich gebraucht? Mein Telefon hat doch vorher auch super funktioniert.&lt;br&gt;<br/>Die meisten Dinge, die man unter Android mit Root bewerkstelligen kann, sind rein technischer Natur und sollen die Leistung eines Telefons steigern. Es gibt zwar viele Themes, die sich nur mit Root installieren und verwenden lassen, aber diese sind dann für einen kleinen teil der Gemeinde geschaffen und sollen eher den Endbenutzer ansprechen.<br/>Die beliebteste Funktion, die man nur mit Root erreichen kann, ist die [[Prozessor übertakten|Übertaktung des Prozessors]]. Meist wird der Prozessor in den Telefonen untertaktet, um die lebensdauer der CPU zu schonen. Die volle Leistung fällt dabei natürlich in den Hintergrund und gerade bei älteren Telefonen macht das Übetakten des Prozessors Sinn.<br/>Häufig wird aber, um die Leistung des Telefons zu steigern, eine Art Script in das Autostart Verzeichnis '''init.d''' im Root des Android Systems kopiert, was dafür sorgt, dass die Verwaltung des Arbeitsspeichers nichtmehr allein durch Android geschieht, sondern durch ein von der Community geschriebenes Script unterstützt wird. Dieses bewerkstelligt, dass auch Datenintensivere Apps besser und geschmeidiger laufen, als es mit dem [[Stock]] möglich wäre.<br/><br/>Entgegen landläufiger Meinung ist für das Installieren einer Custom Rom nicht zwingend Root erforderlich. Lediglich der [https://market.android.com/details?id=com.koushikdutta.rommanager&feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5rb3VzaGlrZHV0dGEucm9tbWFuYWdlciJd Rom Manager] (der in vielen Anleitungen genutzt wird) benötigt Root zugriff zum installieren des [[Recovery|Recoveries]]. Zum flashen eines Custom Roms wird lediglich S-OFF benötigt. Siehe dazu [[S-OFF]]
'''Root '''(deutsch: ''Wurzel''), umgangssprachlich für '''Root-Konto''', bzw. '''Root'''-Konto-'''Zugang''', bedeutet bei unixoiden<ref>Unixähnliches Betriebssystem, welches versucht das Verhalten von Unix zu implementieren, http://de.wikipedia.org/wiki/Unixoides_System</ref> Systemen, darunter auch [[Android]], dass der Nutzer vollen Zugriff auf das Betriebssystem und dessen Ressourcen hat.
 
Der synonym verwendete Begriff ''Root'' leitet sich vom Linux-Benutzer ''root'' ab, welcher in der Benutzer- und Berechtigungshierarchie an oberster Stelle steht und somit umfassende Systemberechtigungen besitzt. Root-User werden auch ''Superuser'' genannt.
 
Unter Android ist der Root-Zugriff standardmäßig deaktiviert und das Arbeiten des Benutzers mit Root-Rechten aus Sicherheitsgründen nicht vorgesehen.
 
== Root bei Unix-Systemen ==
Das Benutzerkonto 'root' wird bei einem Unix-artigen System, wie z. B. BSD oder Linux, bei der Installation des Betriebssystems standardmäßig angelegt. Dieser Benutzer ist nicht für die tägliche Arbeit mit dem System gedacht, da aus seiner Verwendung und seinen Rechte-mäßig weit eingeräumten Möglichkeiten eine ebenso große Gefahr entsteht. Aus diesem Grund wird ''root'' i.d.R. nur verwendet, wenn Verwaltungsaufgaben am System durchgeführt werden müssen, für die die Rechte eines normalen Benutzers nicht ausreichend sind.
 
=== Wechseln der Identität ===
Unter Ubuntu kann man die Identität (den Benutzer) jederzeit wechseln. Aktionen, die Root-Recht verlangen, sind z. B. die Installation eines Programms oder die Aktualisierung eines Treibers für ein neues Gerät. Aber auch viele Eingriffe von Schadsoftware in das System verlangen Root-Recht. Wenn nicht schon als root-Benutzer gearbeitet wird (was vermieden werden sollte), wird dann nach dem Passwort für den Benutzer ''root'' gefragt. Um unberechtigte Zugriffe zu vermeiden, sollte das Root-Passwort nur eingeben werden, wenn aktiv ein Programm gestartet wurde, welches dieses Recht erfordert. Im Terminal ([[Shell]]) wechselt man in den root, indem man vor dem eigentlichen Befehl ein "su" (für: '''s'''ubstitute '''u'''ser identity, zu Deutsch: ersetze Benutzeridentität) eingibt. Anschließend wird eine interaktive Shell des Benutzers root gestartet. Wenn nur ein Befehl mit root-Recht ausgeführt werden soll, stellt man dem betreffenden Befehl ''sudo '' voran.
 
== Root unter Android ==
Da [[Android]] unter Android {{Android|5.0}} keine Benutzerkontenverwaltung besitzt, wie sie von PC Betriebssystemen bekannt ist, hat der Benutzer somit keine wirkliche Identität, die er wechseln kann. Er wechselt von Anwendung zu Anwendung, denen die erforderlichen Rechte bei der Installation zugesagt wurden. (Ab Android {{Android|6.0}} muss der Nutzer den Apps die Berechtigungen geben, bevor diese sie nutzen können) Der Benutzer übernimmt also die Identität Rechte von den einzelnen Anwendungen. Für jede [[App]] legt die [[Dalvik VM]] eine eigene User ID (UID) an<ref>http://www.zdnet.de/41553061/android-architektur-wieviel-linux-steckt-in-googles-os/</ref>, der grundsätzlich nur Schreib- und Leserechte auf den von der App erstellten Ordner im /data/data Verzeichnis gewährt werden.
 
=== Rechteverwaltung unter Android ===
[[File:Superuser.png|thumb|Anfrage nach Superuser-Rechten beim [[Wildfire|HTC Wildfire]]]]
Da Android auf dem Linux-Kernel aufbaut, verwendet es die bekannten und bewährten Sicherheitsmechanismen des Kernels, bspw. die Rechteverwaltung. Um eine App installieren zu können, müssen vor dem Herunterladen aus dem [[Google Play Store]] bestimmte Rechte gewährt werden, die die App zum Arbeiten benötigt. Jede App kann nur auf die Telefonfunktionen zugreifen, die sie auch bei der Installation oder beim Update angegeben hat. Der Programmierer legt seiner App eine Datei namens '''AndroidManifest.xml''' bei. Diese Datei beinhaltet neben den Informationen zur App auch die Berechtigungen, die diese benötigt. Aus dieser Datei übernimmt Android und der Play Store dann die Berechtigungen, die der Benutzer bestätigen muss. Nehmen wir also an, ein Programmierer für Schadsoftware will, dass die App Zugriff auf das Senden und Empfangen von SMS hat. Dann muss dieser Programmierer dieses Recht in die AndroidManifest.xml eintragen, damit es im Telefon gewährt wird. Es ist also theoretisch nicht möglich, einer App eine Berechtigung zu geben, ohne dieses vorher in der Datei festgelegt zu haben. Durch das Durchlesen der benötigten Rechte kann der Benutzer dann entscheiden, ob er diese App installieren möchte oder es besser bleiben lässt. So können verdächtige Berechtigungen in der App identifiziert und ein sicheres System gewährleistet werden.
 
Mit Hilfe der in Android {{Android|4.3}} eingeführten Funktion [[App Ops]] ist es möglich, Berechtigungen einer installierten App zu entziehen.
 
=== Root für Android ===
Die ''AndroidManifest.xml'' besitzt allerdings keine Möglichkeit, einer App die Rechte des Benutzers ''root'' zu gewähren. Rechte des root werden bei Android, wie auch bei anderen Unix-ähnlichen Systemen, mit der Dateiberechtigung ''setuid'' realisiert.<ref>{{Internetquelle|url=http://www.androidnext.de/news/android-4-3-der-tod-der-root-rechte/|titel=Android 4.3: Der Tod der Root-Rechte?|datum=2013-07-29|sprache=de|zugriff=2020-02-02}}</ref> Dieses Bit steuert, ob eine ausführbare Datei mit den Rechten des ausführenden Nutzers (beispielsweise einem für eine App angelegten Nutzer) gestartet wird oder mit den Rechten des Erstellers (bei Systemanwendungen ''root''). Benötigt eine App ''root''-Rechte, bedeutet das meist nicht mehr, als dass diese App ein anderes Programm mit root-Rechten ausführen will. Das funktioniert, indem die App die gewünschte ausführbare Datei über die Binärdatei ''su'' (im Ordner ''/system/xbin'') aufruft, welche als einzige im System das Recht hat, den Befehl setuid() zum Ändern des setuid Bits auszuführen. Damit der Nutzer weiterhin die Kontrolle und Übersicht hat, welche App berechtigt ist, Befehle über ''su'' auszuführen, gibt es eine App zur Verwaltung dieser Rechte. Eine dieser Apps ist beispielsweise [https://supersuroot.org/ SuperSU]. Startet der Nutzer eine [[App]], die ''root''-Rechte verlangt, so wird er gefragt, ob er ihr diese gewähren möchte - oder nicht. Die Auswahl lässt sich von der SuperUser-[[App]] temporär oder dauerhaft für diese App speichern. In den Einstellungen ist es ebenfalls möglich, nachträglich die berechtigten Apps zu ändern. Ein ungewollter Zugriff auf einen Befehl über ''su'' (und damit mit ''root''-Rechten) wird somit erschwert.
 
Selbstverständlich muss der Benutzer immer kritisch Anfragen nach ''root''-Rechten gegenüberstehen, um unerwünschte Effekte zu vermeiden.
 
=== Wofür benötigt man Root? ===
So mancher Benutzer eines Smartphones wird sich schon mal gefragt haben: Wofür wird denn nun root unter Android gebraucht? Mein Telefon hat vorher doch auch super funktioniert. - Die meisten Dinge, die man unter Android mit root bewerkstelligen kann, sind rein technischer Natur und sollen beispielsweise die Leistung oder Benutzerfreundlichkeit eines Telefons steigern. Es gibt zwar viele Themes, die sich nur durch den root installieren und verwenden lassen, aber diese sind dann für einen kleinen Teil der Gemeinde geschaffen und sollen eher den Endbenutzer ansprechen. Die beliebteste Funktion, die man nur mit root erreichen kann, ist die [[Overclocking|Übertaktung des Prozessors]]. Das Gerät arbeitet dann schneller, aber die Lebensdauer des Prozessors dürfte dadurch verkürzt werden und der Akku ist auch schneller leer.  
Gerade bei älteren Telefonen mit langsamer CPU hat das Übertakten des Prozessors Sinn. Um die Leistung des Telefons zu steigern, wird häufig eine Art Script in das Autostart-Verzeichnis '''init.d''' in den Root-Ordner des Android Systems kopiert, was dafür sorgt, dass die Verwaltung des Arbeitsspeichers nicht mehr allein durch Android geschieht, sondern durch ein von der Community geschriebenes Script unterstützt wird. Dieses bewerkstelligt, dass aus Sicht des Anwenders auch datenintensivere Apps besser und geschmeidiger laufen, als es mit dem [[Stock]] möglich wäre.
 
Aber auch Unter-Taktung ist möglich, z. B. um den Akku zu schonen und dadurch eine längere Betriebszeit des Telefons bis zum nächsten Aufladen zu erreichen. Die volle Leistung fällt dabei natürlich in den Hintergrund. Anwendung findet diese Methode z. B. bei Geräten mit fest eingebautem Akku, der nur mit erheblichem Aufwand oder gar nicht zu wechseln ist. Die Lebensdauer der [[CPU|CPU]] wird ebenfalls verlängert und damit auch die Lebensdauer des Gerätes, von dem man sich vielleicht nur ungern trennen will.
 
Andere Funktionen, die nur mit einem root-Zugang zu bewerkstelligen sind, sind z. B.  das Löschen von hersteller- und providerseitig installierter [[App]]s, die oft zu kostenpflichtigen Diensten verweisen und gerne als [[Bloatware]] bezeichnet werden. Ohne Rootzugang kann man nur selbst installierte Apps aus der Datenpartition des Betriebsystems löschen. Ein Rootzugung ermöglicht das Zugreifen auf die Systempartition (die /system Partition wird dabei read/write (r/w) eingebunden und ermöglicht neben dem Lesen nun auch das Schreiben von Daten bzw. Löschen oder Verändern) und damit auf die Systemapps.
Eine weitere Option ist das Installieren einer vollständigen [[Busybox]] (also der Unix/Linux Dienstprogramme), um damit die Funktionen des Linuxkernels voll auszunutzen. Vor allem Anwender, die auf dem Desktop mit Unix/Linux und viel in der [[Shell]] arbeiten, wissen dies zu schätzen. Die vollständige Busybox ermöglicht z. B. eine IP-Table firewall, mit der man Apps den Zugang zum Internet verbieten kann. Auch das Einrichten eines swap-spaces (virtueller Arbeitsspeicher) oder das Modifizieren des Kernelverhaltens setzt eine Busybox - und damit root - voraus.
 
Besonders aus Gründen des Datenschutzes ist das Rooten sinnvoll, denn ein root-Zugang ermöglicht es, kritische Rechte für eine App zu blockieren (z. b. Lokalisierungsfunktionen oder das Auslesen der Kontakte). Ebenso lassen sich Werbeblocker installieren, welche die Bannerwerbung in Apps unterbinden.
 
Entgegen landläufiger Meinung ist für das Installieren eines Custom ROM nicht zwingend root erforderlich. Lediglich der {{MarketLink|com.koushikdutta.rommanager|Rom Manager}}, welcher in vielen Anleitungen genutzt wird, benötigt root zum Installieren des [[Recovery|Recoveries]]. Zum Flashen eines Custom ROM wird lediglich ein [[Bootloader Unlock|entsperrter Bootloader]] benötigt.
 
== Das Rooten ==
Das Rooten an sich ist eine relativ einfache Angelegenheit und wird durch die Installation, bzw. Kopieren der su-binary in den Ordner /system/xbin erreicht. Die App SuperUser dient nach der Installation der Verwaltung dieser Binary. Die Binary kann man sich kostenfrei [https://chainfire.eu/ hier] herunterladen und zum Beispiel mit dem [[ClockWorkMod]]-Recovery installieren. Problematisch wird es, wenn man als Nutzer keine Schreibrechte auf die /system [[Partition]] hat. In dem Fall muss man gerätespezifisch recherchieren, ob es eine Möglichkeit gibt, Schreibrechte auf diese Partition zu erhalten. Dies wird irrtümlich immer wieder als "Rooten" bezeichnet, obwohl der Prozess im wesentlichen nur die oben genannte Installation beschreibt.
 
=== Wie erkenne ich, ob ich Root-Rechte habe? ===
Nachdem man sein Gerät "gerootet" hat, möchte man natürlich gerne wissen, ob die angewendete root-Methode funktioniert hat. Um dies zu überprüfen, ist es am einfachsten, sich eine App aus dem Play Store herunter zu laden, welche (für einzelne Funktionen) root-Rechte benötigt und diese dann ausprobiert. Dies kann zum Beispiel ein Datei-Explorer sein, welcher auch auf das Dateisystem mit erhöhten Rechten zugreifen kann (siehe [[Root-Explorer]]). Auch die App {{MarketLink|com.joeykrim.rootcheck|Root Checker}} ist dafür eine beliebte und gute Möglichkeit. Die einzige Funktion dieser App ist es anzuzeigen, ob das Gerät gerootet ist oder nicht.
 
=== systemless Root ===
{{Hauptartikel|systemless Root}}Beim ''systemless Root'' handelt es sich um eine Installationsmethode des ''su''-Dienstes, der SuperSU App und der benötigten Dateien ohne die /system-Partition zu verändern.
 
== Der Superuser ==
Der Superuser ist ein Synonym für den User root. Um root auf dem Android-Gerät nutzen zu können, benötigt man, wie bereits erwähnt, den superuser oder genauer gesagt die {{MarketLink|com.noshufou.android.su|Superuser}}-App. Der Superuser ist unter Unix/Linux gleichzusetzen mit dem Administrator-Konto in Windows-Systemen.
 
Die Superuser-App in Android ist sozusagen eine Schnittstelle zwischen dem Superuser und dem Handybediener. Wenn eine App Rechte des Superusers benötigt, wird die Anfrage von der Superuser-App registriert und dem Bediener angezeigt. Der Benutzer hat dann die Möglichkeit, der anfragenden App die Superuser-Rechte zu gewähren oder zu verweigern.
 
== Siehe auch ==
* [[Partitionen]]
 
== Einzelnachweis ==
<references />
 
[[Kategorie:Allgemein]]
[[Kategorie:Begriffe]]

Aktuelle Version vom 2. Februar 2020, 13:56 Uhr

Root (deutsch: Wurzel), umgangssprachlich für Root-Konto, bzw. Root-Konto-Zugang, bedeutet bei unixoiden[1] Systemen, darunter auch Android, dass der Nutzer vollen Zugriff auf das Betriebssystem und dessen Ressourcen hat.

Der synonym verwendete Begriff Root leitet sich vom Linux-Benutzer root ab, welcher in der Benutzer- und Berechtigungshierarchie an oberster Stelle steht und somit umfassende Systemberechtigungen besitzt. Root-User werden auch Superuser genannt.

Unter Android ist der Root-Zugriff standardmäßig deaktiviert und das Arbeiten des Benutzers mit Root-Rechten aus Sicherheitsgründen nicht vorgesehen.

Root bei Unix-Systemen[Bearbeiten | Quelltext bearbeiten]

Das Benutzerkonto 'root' wird bei einem Unix-artigen System, wie z. B. BSD oder Linux, bei der Installation des Betriebssystems standardmäßig angelegt. Dieser Benutzer ist nicht für die tägliche Arbeit mit dem System gedacht, da aus seiner Verwendung und seinen Rechte-mäßig weit eingeräumten Möglichkeiten eine ebenso große Gefahr entsteht. Aus diesem Grund wird root i.d.R. nur verwendet, wenn Verwaltungsaufgaben am System durchgeführt werden müssen, für die die Rechte eines normalen Benutzers nicht ausreichend sind.

Wechseln der Identität[Bearbeiten | Quelltext bearbeiten]

Unter Ubuntu kann man die Identität (den Benutzer) jederzeit wechseln. Aktionen, die Root-Recht verlangen, sind z. B. die Installation eines Programms oder die Aktualisierung eines Treibers für ein neues Gerät. Aber auch viele Eingriffe von Schadsoftware in das System verlangen Root-Recht. Wenn nicht schon als root-Benutzer gearbeitet wird (was vermieden werden sollte), wird dann nach dem Passwort für den Benutzer root gefragt. Um unberechtigte Zugriffe zu vermeiden, sollte das Root-Passwort nur eingeben werden, wenn aktiv ein Programm gestartet wurde, welches dieses Recht erfordert. Im Terminal (Shell) wechselt man in den root, indem man vor dem eigentlichen Befehl ein "su" (für: substitute user identity, zu Deutsch: ersetze Benutzeridentität) eingibt. Anschließend wird eine interaktive Shell des Benutzers root gestartet. Wenn nur ein Befehl mit root-Recht ausgeführt werden soll, stellt man dem betreffenden Befehl sudo voran.

Root unter Android[Bearbeiten | Quelltext bearbeiten]

Da Android unter Android 5.0 Lollipop "Lollipop" keine Benutzerkontenverwaltung besitzt, wie sie von PC Betriebssystemen bekannt ist, hat der Benutzer somit keine wirkliche Identität, die er wechseln kann. Er wechselt von Anwendung zu Anwendung, denen die erforderlichen Rechte bei der Installation zugesagt wurden. (Ab Android 6.0 Marshmallow "Marshmallow" muss der Nutzer den Apps die Berechtigungen geben, bevor diese sie nutzen können) Der Benutzer übernimmt also die Identität Rechte von den einzelnen Anwendungen. Für jede App legt die Dalvik VM eine eigene User ID (UID) an[2], der grundsätzlich nur Schreib- und Leserechte auf den von der App erstellten Ordner im /data/data Verzeichnis gewährt werden.

Rechteverwaltung unter Android[Bearbeiten | Quelltext bearbeiten]

Anfrage nach Superuser-Rechten beim HTC Wildfire

Da Android auf dem Linux-Kernel aufbaut, verwendet es die bekannten und bewährten Sicherheitsmechanismen des Kernels, bspw. die Rechteverwaltung. Um eine App installieren zu können, müssen vor dem Herunterladen aus dem Google Play Store bestimmte Rechte gewährt werden, die die App zum Arbeiten benötigt. Jede App kann nur auf die Telefonfunktionen zugreifen, die sie auch bei der Installation oder beim Update angegeben hat. Der Programmierer legt seiner App eine Datei namens AndroidManifest.xml bei. Diese Datei beinhaltet neben den Informationen zur App auch die Berechtigungen, die diese benötigt. Aus dieser Datei übernimmt Android und der Play Store dann die Berechtigungen, die der Benutzer bestätigen muss. Nehmen wir also an, ein Programmierer für Schadsoftware will, dass die App Zugriff auf das Senden und Empfangen von SMS hat. Dann muss dieser Programmierer dieses Recht in die AndroidManifest.xml eintragen, damit es im Telefon gewährt wird. Es ist also theoretisch nicht möglich, einer App eine Berechtigung zu geben, ohne dieses vorher in der Datei festgelegt zu haben. Durch das Durchlesen der benötigten Rechte kann der Benutzer dann entscheiden, ob er diese App installieren möchte oder es besser bleiben lässt. So können verdächtige Berechtigungen in der App identifiziert und ein sicheres System gewährleistet werden.

Mit Hilfe der in Android 4.3 Jelly Bean "Jelly Bean" eingeführten Funktion App Ops ist es möglich, Berechtigungen einer installierten App zu entziehen.

Root für Android[Bearbeiten | Quelltext bearbeiten]

Die AndroidManifest.xml besitzt allerdings keine Möglichkeit, einer App die Rechte des Benutzers root zu gewähren. Rechte des root werden bei Android, wie auch bei anderen Unix-ähnlichen Systemen, mit der Dateiberechtigung setuid realisiert.[3] Dieses Bit steuert, ob eine ausführbare Datei mit den Rechten des ausführenden Nutzers (beispielsweise einem für eine App angelegten Nutzer) gestartet wird oder mit den Rechten des Erstellers (bei Systemanwendungen root). Benötigt eine App root-Rechte, bedeutet das meist nicht mehr, als dass diese App ein anderes Programm mit root-Rechten ausführen will. Das funktioniert, indem die App die gewünschte ausführbare Datei über die Binärdatei su (im Ordner /system/xbin) aufruft, welche als einzige im System das Recht hat, den Befehl setuid() zum Ändern des setuid Bits auszuführen. Damit der Nutzer weiterhin die Kontrolle und Übersicht hat, welche App berechtigt ist, Befehle über su auszuführen, gibt es eine App zur Verwaltung dieser Rechte. Eine dieser Apps ist beispielsweise SuperSU. Startet der Nutzer eine App, die root-Rechte verlangt, so wird er gefragt, ob er ihr diese gewähren möchte - oder nicht. Die Auswahl lässt sich von der SuperUser-App temporär oder dauerhaft für diese App speichern. In den Einstellungen ist es ebenfalls möglich, nachträglich die berechtigten Apps zu ändern. Ein ungewollter Zugriff auf einen Befehl über su (und damit mit root-Rechten) wird somit erschwert.

Selbstverständlich muss der Benutzer immer kritisch Anfragen nach root-Rechten gegenüberstehen, um unerwünschte Effekte zu vermeiden.

Wofür benötigt man Root?[Bearbeiten | Quelltext bearbeiten]

So mancher Benutzer eines Smartphones wird sich schon mal gefragt haben: Wofür wird denn nun root unter Android gebraucht? Mein Telefon hat vorher doch auch super funktioniert. - Die meisten Dinge, die man unter Android mit root bewerkstelligen kann, sind rein technischer Natur und sollen beispielsweise die Leistung oder Benutzerfreundlichkeit eines Telefons steigern. Es gibt zwar viele Themes, die sich nur durch den root installieren und verwenden lassen, aber diese sind dann für einen kleinen Teil der Gemeinde geschaffen und sollen eher den Endbenutzer ansprechen. Die beliebteste Funktion, die man nur mit root erreichen kann, ist die Übertaktung des Prozessors. Das Gerät arbeitet dann schneller, aber die Lebensdauer des Prozessors dürfte dadurch verkürzt werden und der Akku ist auch schneller leer. Gerade bei älteren Telefonen mit langsamer CPU hat das Übertakten des Prozessors Sinn. Um die Leistung des Telefons zu steigern, wird häufig eine Art Script in das Autostart-Verzeichnis init.d in den Root-Ordner des Android Systems kopiert, was dafür sorgt, dass die Verwaltung des Arbeitsspeichers nicht mehr allein durch Android geschieht, sondern durch ein von der Community geschriebenes Script unterstützt wird. Dieses bewerkstelligt, dass aus Sicht des Anwenders auch datenintensivere Apps besser und geschmeidiger laufen, als es mit dem Stock möglich wäre.

Aber auch Unter-Taktung ist möglich, z. B. um den Akku zu schonen und dadurch eine längere Betriebszeit des Telefons bis zum nächsten Aufladen zu erreichen. Die volle Leistung fällt dabei natürlich in den Hintergrund. Anwendung findet diese Methode z. B. bei Geräten mit fest eingebautem Akku, der nur mit erheblichem Aufwand oder gar nicht zu wechseln ist. Die Lebensdauer der CPU wird ebenfalls verlängert und damit auch die Lebensdauer des Gerätes, von dem man sich vielleicht nur ungern trennen will.

Andere Funktionen, die nur mit einem root-Zugang zu bewerkstelligen sind, sind z. B. das Löschen von hersteller- und providerseitig installierter Apps, die oft zu kostenpflichtigen Diensten verweisen und gerne als Bloatware bezeichnet werden. Ohne Rootzugang kann man nur selbst installierte Apps aus der Datenpartition des Betriebsystems löschen. Ein Rootzugung ermöglicht das Zugreifen auf die Systempartition (die /system Partition wird dabei read/write (r/w) eingebunden und ermöglicht neben dem Lesen nun auch das Schreiben von Daten bzw. Löschen oder Verändern) und damit auf die Systemapps. Eine weitere Option ist das Installieren einer vollständigen Busybox (also der Unix/Linux Dienstprogramme), um damit die Funktionen des Linuxkernels voll auszunutzen. Vor allem Anwender, die auf dem Desktop mit Unix/Linux und viel in der Shell arbeiten, wissen dies zu schätzen. Die vollständige Busybox ermöglicht z. B. eine IP-Table firewall, mit der man Apps den Zugang zum Internet verbieten kann. Auch das Einrichten eines swap-spaces (virtueller Arbeitsspeicher) oder das Modifizieren des Kernelverhaltens setzt eine Busybox - und damit root - voraus.

Besonders aus Gründen des Datenschutzes ist das Rooten sinnvoll, denn ein root-Zugang ermöglicht es, kritische Rechte für eine App zu blockieren (z. b. Lokalisierungsfunktionen oder das Auslesen der Kontakte). Ebenso lassen sich Werbeblocker installieren, welche die Bannerwerbung in Apps unterbinden.

Entgegen landläufiger Meinung ist für das Installieren eines Custom ROM nicht zwingend root erforderlich. Lediglich der Rom Manager Play Store, welcher in vielen Anleitungen genutzt wird, benötigt root zum Installieren des Recoveries. Zum Flashen eines Custom ROM wird lediglich ein entsperrter Bootloader benötigt.

Das Rooten[Bearbeiten | Quelltext bearbeiten]

Das Rooten an sich ist eine relativ einfache Angelegenheit und wird durch die Installation, bzw. Kopieren der su-binary in den Ordner /system/xbin erreicht. Die App SuperUser dient nach der Installation der Verwaltung dieser Binary. Die Binary kann man sich kostenfrei hier herunterladen und zum Beispiel mit dem ClockWorkMod-Recovery installieren. Problematisch wird es, wenn man als Nutzer keine Schreibrechte auf die /system Partition hat. In dem Fall muss man gerätespezifisch recherchieren, ob es eine Möglichkeit gibt, Schreibrechte auf diese Partition zu erhalten. Dies wird irrtümlich immer wieder als "Rooten" bezeichnet, obwohl der Prozess im wesentlichen nur die oben genannte Installation beschreibt.

Wie erkenne ich, ob ich Root-Rechte habe?[Bearbeiten | Quelltext bearbeiten]

Nachdem man sein Gerät "gerootet" hat, möchte man natürlich gerne wissen, ob die angewendete root-Methode funktioniert hat. Um dies zu überprüfen, ist es am einfachsten, sich eine App aus dem Play Store herunter zu laden, welche (für einzelne Funktionen) root-Rechte benötigt und diese dann ausprobiert. Dies kann zum Beispiel ein Datei-Explorer sein, welcher auch auf das Dateisystem mit erhöhten Rechten zugreifen kann (siehe Root-Explorer). Auch die App Root Checker Play Store ist dafür eine beliebte und gute Möglichkeit. Die einzige Funktion dieser App ist es anzuzeigen, ob das Gerät gerootet ist oder nicht.

systemless Root[Bearbeiten | Quelltext bearbeiten]

Hauptartikel: systemless Root

Beim systemless Root handelt es sich um eine Installationsmethode des su-Dienstes, der SuperSU App und der benötigten Dateien ohne die /system-Partition zu verändern.

Der Superuser[Bearbeiten | Quelltext bearbeiten]

Der Superuser ist ein Synonym für den User root. Um root auf dem Android-Gerät nutzen zu können, benötigt man, wie bereits erwähnt, den superuser oder genauer gesagt die Superuser Play Store-App. Der Superuser ist unter Unix/Linux gleichzusetzen mit dem Administrator-Konto in Windows-Systemen.

Die Superuser-App in Android ist sozusagen eine Schnittstelle zwischen dem Superuser und dem Handybediener. Wenn eine App Rechte des Superusers benötigt, wird die Anfrage von der Superuser-App registriert und dem Bediener angezeigt. Der Benutzer hat dann die Möglichkeit, der anfragenden App die Superuser-Rechte zu gewähren oder zu verweigern.

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Einzelnachweis[Bearbeiten | Quelltext bearbeiten]