Root: Unterschied zwischen den Versionen

Aus Android Wiki
(Erklärung "unixoiden Systeme")
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
'''Root '''(engl.: "Wurzel", daher: "Wurzelverzeichnis") bedeutet bei unixoiden<ref>unixoiden = Unix-ähnlich, Betriebssystem welches versucht das Verhalten von Unix zu implementieren, http://de.wikipedia.org/wiki/Unixoides_System</ref> Systemen, darunter auch Android, vollen Zugriff auf das Betriebssystem und deren Ressourcen zu haben. Man hat durch Root-Rechte die volle Berechtigung auf dem System alles ändern und löschen zu können.
'''Root '''(engl.: "Wurzel", daher: "Wurzelverzeichnis") bedeutet bei unixoiden<ref>unixoiden = Unix-ähnlich, Betriebssystem welches versucht das Verhalten von Unix zu implementieren, http://de.wikipedia.org/wiki/Unixoides_System</ref> Systemen, darunter auch Android, vollen Zugriff auf das Betriebssystem und deren Ressourcen zu haben.
Der Name Root kommt von dem Hintergrund, dass der User root in Linux grundsätzlich alle Berechtigungen hat, also alles darf und kann. Root-User werden auch Superuser genannt, da diese Benutzer alle Rechte haben.
 
Der Name 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, da dieser Benutzer grundsätzlich alle Berechtigungen besitzt.
 
Unter Android ist der Root-Zugriff standardmäßig deaktiviert und das Arbeiten des Benutzers mit Root-Rechten aus sicherheitstechnischen Gründen nicht vorgesehen.  
Unter Android ist der Root-Zugriff standardmäßig deaktiviert und das Arbeiten des Benutzers mit Root-Rechten aus sicherheitstechnischen Gründen nicht vorgesehen.  


== Root unter Unix-Systemen ==
== Root unter Unix-Systemen ==


Das Root - Konto im Unix - artigen System 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 - Installation 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. Standardmäßig sind diese Rechte deaktiviert, was bedeutet, dass der Benutzer (oder aber auch die evtl. Schadsoftware) keine tief greifenden Systemänderungen vornehmen darf, ohne vorher die Identität gewechselt zu haben. Unter Linux ist es deshalb ratsam, ein primäres Benutzerkonto anzulegen, das keine Root-Rechte erlangen kann und darf. Nur für Aktionen die Einstellungen am System ändern sollte man den Benutzer wechseln.
Das Root-Konto im Unix-artigen System, wie z. B. Ubuntu, wird bei der Installation des Betriebssystems standardmäßig angelegt. Dieser Benutzer ist nicht für die tägliche Arbeit mit dem System gedacht, da aus der Verwendung des Benutzers und seinen Rechtemäßig eingeräumten Möglichkeiten, eine ebenso große Gefahr ensteht. Aus diesem Grund wird der Root-Benutzer i.d.R. nur verwendet, wenn Verwaltungsaufgaben am System durchgeführt werden müssen, die die Rechte des Benutzers erfordern.


=== Wechseln der Identität ===
=== Wechseln der Identität ===


Unter Ubuntu kann man die Identität jederzeit bei Aktionen, die Root-Rechte erfordern, wechseln. Aktionen, die Root-Recht verlangen, sind zum Beispiel die Installation eines Programms 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. Im Terminal wechselt man in den Root, indem vor dem eigentlichen Befehl ein "su" (für: superuser) eingibt. Alternativ führt der Befehl "sudo" zum gleichen Erfolg.  
Unter Ubuntu kann man die Identität jederzeit bei Aktionen, die Root-Rechte erfordern, wechseln. Aktionen, die Root-Recht verlangen, sind zum Beispiel die Installation eines Programms 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 den Benutzer ''root'' gefragt wird. Um unberechtigte Zugriffe zu vermeiden, sollte man das Root-Passwort lediglich dann eingeben, wenn man aktiv ein Programm gestartet hat, welches diese Rechte erfordert. Im Terminal ([[Shell]]) wechselt man in den Root, indem man vor dem eigentlichen Befehl ein "su" (für: superuser) eingibt. Anschließend wird eine interaktive Shell des Benutzers Root gestartet. Wenn man nur einen Befehl mit root-Rechten ausführen will, stellt man vor dem betreffenden Befehl ''sudo'' voran.


== Root unter Android ==
== Root unter Android ==


Da [[Android]] keine Benutzerkontenverwaltung besitzt, wie sie von PC Betriebssystemen bekannt ist, hat der Benutzer somit keine Identität, die er wechseln kann. Er wechselt von Anwendung zu Anwendung, denen die erforderlichen Rechte bei der Installation zugesagt wurden. Der Benutzer übernimmt also die Identität und Rechte von den einzelnen Anwendungen. Für jede [[App]] legt die [[Dalvik VM]] einen eigenen Benutzer an<ref>http://www.zdnet.de/41553061/android-architektur-wieviel-linux-steckt-in-googles-os/</ref>, dem grundsätzlich nur Schreib- und Leserechte auf den von der App erstellten Ordner im /data/data Verzeichnis gewährt werden.
Da [[Android]] 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. Der Benutzer übernimmt also die Identität und 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>, dem grundsätzlich nur Schreib- und Leserechte auf den von der App erstellten Ordner im /data/data Verzeichnis gewährt werden.


=== Rechteverwaltung unter Android ===
=== Rechteverwaltung unter Android ===
[[File:Superuser.png|thumb|Anfrage nach Superuser-Rechten]]
[[File:Superuser.png|thumb|Anfrage nach Superuser-Rechten]]
Da Android auf dem Linux-Kernel aufbaut, gilt es als ein relativ sicheres Betriebssystem. Aber wie kann es sein, dass ein kleines OS (Operating System, Betriebssystem) sicherer ist, als ein auf dem PC installiertes Windows? Nun, das 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. Der Programmierer legt seiner App eine Datei namens '''AndroidManifest.xml''' bei. Diese Datei beinhaltet neben den Informationen zur App auch noch die Berechtigungen, die diese benötigt. Aus dieser Datei übernimmt Android und der Market 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 dieses Recht im Telefon gewährt wird. Es ist also nicht möglich, einer App eine Berechtigung zu geben, ohne dieses vorher in die Datei geschrieben zu haben. Durch das Durchlesen der benötigten Rechte kann der User dann entscheiden, ob er diese App installieren möchte oder nicht.
Da Android auf dem Linux-Kernel aufbaut, gilt es als ein relativ sicheres Betriebssystem. Diese hohe Sicherheit wird beispielsweise durch das Rechteverwaltung in Android erreicht. 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 dieses Recht im Telefon gewährt wird. Es ist also theoretisch nicht möglich, einer App eine Berechtigung zu geben, ohne dieses vorher in die Datei festgelegt zu haben. Durch das Durchlesen der benötigten Rechte kann der User dann entscheiden, ob er diese App installieren möchte oder nicht.
So können verdächtige Berechtigungen identifiziert, und ein sicheres System gewährleistet werden.
So können verdächtige Berechtigungen identifiziert, und ein sicheres System gewährleistet werden.


=== Root für Android ===
=== Root für Android ===
 
Die ''AndroidManifest''.xml'' besitzt allerdings keine Möglichkeit einer App Rootrechte zu gewähren oder nicht. Rootrechte werden bei Android, wie auch bei anderen Unix-ähnlichen Systemen, mit der Dateiberechtigung ''setuid'' realisiert<ref>http://www.androidnext.de/news/android-4-3-der-tod-der-root-rechte/</ref><ref>http://cjix.info/blog/featured/how-rooting-works-a-technical-explanation-of-the-android-rooting-process/</ref>. Dieses Bit steuert, ob eine ausführbare Datei mit den Rechten des ausführenden Users (beispielsweise einer App) gestartet wird, oder mit den Rechten des Erstellers (bei Systemanwendungen meist root). Benötigt eine App Root-Rechte bedeutet das meist nicht mehr als das diese App andere Programm mit Root-Rechten ausführen will (meist Systembinarys). Dies wird dadurch realisiert, dass diese App die Systembinary über die Binary ''su'' (meist 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 User weiterhin die Kontrolle und Übersicht hat, welche App berechtigt ist, Befehle über die su-Binary auszuführen, benötigt man eine App zur Verwaltung dieser Rechte. Eine dieser Apps ist beispielsweise {{MarketLink|eu.chainfire.supersu|SuperSU}}. Startet der User eine [[App]] die Root-Rechte verlangt, wird er gefragt, ob er ihr die erforderlichen Rechte 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 Root-Rechte zu ändern. Ein ungewollter Zugriff auf einen Befehl über die su-Binary (und zwangsläufig mit SuperUser-Rechten) ist somit ausgeschlossen.
Nun kommen wir aber zum Root unter [[Android]] und wie dieses gewährt wird. Denn die "AndroidManifest.xml"-Datei sieht solch einen Root-Zugriff nicht vor und es gibt dafür auch keinen Befehl, den man da eintragen könnte. Also, wie kann man einer [[App]] Root-Rechte gewähren? Dazu wird bei dem sogenannten "Rooten" von Android ein Script in den Systempfad gelegt, der es erlaubt, diese Systempartition mit Schreibrechten zu [[Mounten]].
Um die Rechte zum Anlegen des Scripts zu erhalten, nutzt man eine [[Privilegieneskalation]], die meist durch ein [[Exploit]] durchgeführt wird. Dafür wird ebenfalls eine [[App]] installiert, die {{MarketLink|com.noshufou.android.su|Superuser}} genannt wird. Das ist die grafische Oberfläche für die Verwaltung von Root-Rechten (''superuser''-Rechte). Startet der User nun 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]] temporär oder dauerhaft für diese App speichern. In den Einstellungen ist es ebenfalls möglich, nachträglich die Root-Rechte zu ändern. Alle Apps, die mit Root-Rechten arbeiten möchten, sind gezwungen bei der Superuser-App nachzufragen. Somit hat der Benutzer die volle Kontrolle über Root-Apps, und ungewolltes Ausführen im Hintergrund ist somit ausgeschlossen.
Es erklärt sich von selbst, dass der Benutzer immer kritisch gegenüber Anfragen nach Root-Rechten stehen sollte, um unerwünschte Effekte zu vermeiden.
Es erklärt sich von selbst, dass der Benutzer immer kritisch gegenüber Anfragen nach Root-Rechten stehen sollte, um unerwünschte Effekte zu vermeiden.


=== Wofür benötigt man Root? ===
=== Wofür benötigt man Root? ===
Wofür wird denn nun Root unter Android eigentlich gebraucht? Mein Telefon hat doch vorher auch super funktioniert. Die meisten Dinge, die man unter Android mit Root bewerkstelligen kann, sind rein technischer Natur und sollen beispielsweise 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. Die beliebteste Funktion, die man nur mit Root erreichen kann, ist die [[Overclocking|Übertaktung des Prozessors]]. Meist wird der Prozessor in den Telefonen runtergetaktet, 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 Übertakten des Prozessors Sinn. 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 nicht mehr 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.


Wofür wird denn nun Root unter Android eigentlich gebraucht? Mein Telefon hat doch vorher auch super funktioniert. 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. Die beliebteste Funktion, die man nur mit Root erreichen kann, ist die [[Overclocking|Übertaktung des Prozessors]]. Meist wird der Prozessor in den Telefonen runtergetaktet, 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 Übertakten des Prozessors Sinn. 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 nicht mehr 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.
Andere Funktionen die nur mit einem Root-Zugang zu bewerkstelligen sind, ist das Löschen 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 das Schreiben auf 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 Swapspaces (virtueller Arbeitsspeicher) oder das Modifizieren des Kernelverhaltens setzt eine Busybox - und damit Root - voraus.
Andere Funktionen die nur mit einem Root-Zugang zu bewerkstelligen sind, ist das Löschen 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 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 Swapspaces (virtueller Arbeitsspeicher) oder das Modifizieren des Kernelverhaltens setzt eine Busybox - und damit Root - voraus.


Gerade aus Datenschutzgründen ist das Rooten zudem sinnvoll, denn ein Rootzugang ermöglicht es, kritische Rechte einer App zu blockieren (z.b. Lokalisierungsfunktionen, oder die Möglichkeit, Kontakte auszulesen). Ebenso lassen sich Werbeblocker installieren, die Bannerwerbung in Apps unterbindet.
Gerade aus Datenschutzgründen ist das Rooten zudem sinnvoll, denn ein Rootzugang ermöglicht es, kritische Rechte einer App zu blockieren (z.b. Lokalisierungsfunktionen, oder die Möglichkeit, Kontakte auszulesen). Ebenso lassen sich Werbeblocker installieren, die Bannerwerbung in Apps unterbindet.


Entgegen landläufiger Meinung ist für das Installieren einer Custom ROM nicht zwingend Root erforderlich. Lediglich der {{MarketLink|com.koushikdutta.rommanager|Rom Manager}}, der in vielen Anleitungen genutzt wird, benötigt Root zum Installieren des [[Recovery|Recoveries]]. Zum Flashen eines Custom ROM wird lediglich [[S-OFF]] benötigt.
Entgegen landläufiger Meinung ist für das Installieren einer Custom ROM nicht zwingend Root erforderlich. Lediglich der {{MarketLink|com.koushikdutta.rommanager|Rom Manager}}, der 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 ==
Das Rooten an sich ist eine relativ einfache Angelegenheit und wird durch das Installieren, 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 [http://androidsu.com/superuser/ 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.
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 [http://androidsu.com/superuser/ 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? ===
=== Wie erkenne ich, ob ich Root-Rechte habe? ===
Zeile 44: Zeile 43:


== Der Superuser ==
== Der Superuser ==
Um Root auf dem Android-Smartphone nutzen zu können, benötigt man, wie bereits erwähnt, den Superuser oder genauer gesagt die {{MarketLink|com.noshufou.android.su|Superuser}}-App. Aber was genau ist der Superuser?
Um Root auf dem Android-Smartphone nutzen zu können, benötigt man, wie bereits erwähnt, den Superuser oder genauer gesagt die {{MarketLink|com.noshufou.android.su|Superuser}}-App. Superuser ist unter Unix/Linux gleichzusetzen mit dem Administrator-Konto in Windows-Systemen. Der Superuser ist ein Synonym für den User root.
Superuser ist in der Linux-Welt gleichzusetzen mit dem Administrator-Konto in Windows-Systemen. Das heißt, er kann alles auf dem System ausführen und verändern. Er hat sämtliche Rechte und kann somit auch auf alles zugreifen.
 
Die Superuser-App in Android ist sozusagen eine Schnittelle zwischen dem Superuser und dem Handybediener. Wenn eine App Superuser-Rechte 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.
Die Superuser-App in Android ist sozusagen eine Schnittelle zwischen dem Superuser und dem Handybediener. Wenn eine App Superuser-Rechte 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 ==
== Einzelnachweis ==

Version vom 30. Juli 2013, 16:48 Uhr

Root (engl.: "Wurzel", daher: "Wurzelverzeichnis") bedeutet bei unixoiden[1] Systemen, darunter auch Android, vollen Zugriff auf das Betriebssystem und deren Ressourcen zu haben.

Der Name 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, da dieser Benutzer grundsätzlich alle Berechtigungen besitzt.

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

Root unter Unix-Systemen

Das Root-Konto im Unix-artigen System, wie z. B. Ubuntu, wird bei der Installation des Betriebssystems standardmäßig angelegt. Dieser Benutzer ist nicht für die tägliche Arbeit mit dem System gedacht, da aus der Verwendung des Benutzers und seinen Rechtemäßig eingeräumten Möglichkeiten, eine ebenso große Gefahr ensteht. Aus diesem Grund wird der Root-Benutzer i.d.R. nur verwendet, wenn Verwaltungsaufgaben am System durchgeführt werden müssen, die die Rechte des Benutzers erfordern.

Wechseln der Identität

Unter Ubuntu kann man die Identität jederzeit bei Aktionen, die Root-Rechte erfordern, wechseln. Aktionen, die Root-Recht verlangen, sind zum Beispiel die Installation eines Programms 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 den Benutzer root gefragt wird. Um unberechtigte Zugriffe zu vermeiden, sollte man das Root-Passwort lediglich dann eingeben, wenn man aktiv ein Programm gestartet hat, welches diese Rechte erfordert. Im Terminal (Shell) wechselt man in den Root, indem man vor dem eigentlichen Befehl ein "su" (für: superuser) eingibt. Anschließend wird eine interaktive Shell des Benutzers Root gestartet. Wenn man nur einen Befehl mit root-Rechten ausführen will, stellt man vor dem betreffenden Befehl sudo voran.

Root unter Android

Da Android 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. Der Benutzer übernimmt also die Identität und Rechte von den einzelnen Anwendungen. Für jede App legt die Dalvik VM eine eigene User ID (UID) an[2], dem grundsätzlich nur Schreib- und Leserechte auf den von der App erstellten Ordner im /data/data Verzeichnis gewährt werden.

Rechteverwaltung unter Android

Anfrage nach Superuser-Rechten

Da Android auf dem Linux-Kernel aufbaut, gilt es als ein relativ sicheres Betriebssystem. Diese hohe Sicherheit wird beispielsweise durch das Rechteverwaltung in Android erreicht. 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 dieses Recht im Telefon gewährt wird. Es ist also theoretisch nicht möglich, einer App eine Berechtigung zu geben, ohne dieses vorher in die Datei festgelegt zu haben. Durch das Durchlesen der benötigten Rechte kann der User dann entscheiden, ob er diese App installieren möchte oder nicht. So können verdächtige Berechtigungen identifiziert, und ein sicheres System gewährleistet werden.

Root für Android

Die AndroidManifest.xml besitzt allerdings keine Möglichkeit einer App Rootrechte zu gewähren oder nicht. Rootrechte werden bei Android, wie auch bei anderen Unix-ähnlichen Systemen, mit der Dateiberechtigung setuid realisiert[3][4]. Dieses Bit steuert, ob eine ausführbare Datei mit den Rechten des ausführenden Users (beispielsweise einer App) gestartet wird, oder mit den Rechten des Erstellers (bei Systemanwendungen meist root). Benötigt eine App Root-Rechte bedeutet das meist nicht mehr als das diese App andere Programm mit Root-Rechten ausführen will (meist Systembinarys). Dies wird dadurch realisiert, dass diese App die Systembinary über die Binary su (meist 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 User weiterhin die Kontrolle und Übersicht hat, welche App berechtigt ist, Befehle über die su-Binary auszuführen, benötigt man eine App zur Verwaltung dieser Rechte. Eine dieser Apps ist beispielsweise SuperSU Play Store. Startet der User eine App die Root-Rechte verlangt, wird er gefragt, ob er ihr die erforderlichen Rechte 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 Root-Rechte zu ändern. Ein ungewollter Zugriff auf einen Befehl über die su-Binary (und zwangsläufig mit SuperUser-Rechten) ist somit ausgeschlossen. Es erklärt sich von selbst, dass der Benutzer immer kritisch gegenüber Anfragen nach Root-Rechten stehen sollte, um unerwünschte Effekte zu vermeiden.

Wofür benötigt man Root?

Wofür wird denn nun Root unter Android eigentlich gebraucht? Mein Telefon hat doch vorher auch super funktioniert. Die meisten Dinge, die man unter Android mit Root bewerkstelligen kann, sind rein technischer Natur und sollen beispielsweise 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. Die beliebteste Funktion, die man nur mit Root erreichen kann, ist die Übertaktung des Prozessors. Meist wird der Prozessor in den Telefonen runtergetaktet, 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 Übertakten des Prozessors Sinn. 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 nicht mehr 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.

Andere Funktionen die nur mit einem Root-Zugang zu bewerkstelligen sind, ist das Löschen 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 das Schreiben auf 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 Swapspaces (virtueller Arbeitsspeicher) oder das Modifizieren des Kernelverhaltens setzt eine Busybox - und damit Root - voraus.

Gerade aus Datenschutzgründen ist das Rooten zudem sinnvoll, denn ein Rootzugang ermöglicht es, kritische Rechte einer App zu blockieren (z.b. Lokalisierungsfunktionen, oder die Möglichkeit, Kontakte auszulesen). Ebenso lassen sich Werbeblocker installieren, die Bannerwerbung in Apps unterbindet.

Entgegen landläufiger Meinung ist für das Installieren einer Custom ROM nicht zwingend Root erforderlich. Lediglich der Rom Manager Play Store, der 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

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?

Nachdem man sein Geräte "gerootet" hat, möchte man natürlich gerne genau wissen, ob die diversen Root-Methoden für das entsprechende Gerät auch funktioniert haben. 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 ausführt. 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 eine beliebte und gute Möglichkeit. Die einzige Funktion dieser App ist es, anzuzeigen, ob das Gerät gerootet ist oder nicht.

Der Superuser

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

Die Superuser-App in Android ist sozusagen eine Schnittelle zwischen dem Superuser und dem Handybediener. Wenn eine App Superuser-Rechte 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

Einzelnachweis