Inhaltsverzeichnis:
Wir freuen uns über Ihre Fragen. Es ist immer gut, wenn wir uns gegenseitig helfen können, und wir lernen selbst, wenn wir nach Antworten suchen. Wir finden zwar keine Zeit, um alle zu beantworten, aber manchmal taucht eine bestimmte Frage so oft auf, dass sie eine ausführliche Antwort verdient.
"Was bedeutet root?" ist eine dieser Fragen. Das Konzept mag für einige von uns einfach sein, aber für viele Leute, die sich noch nicht mit Android oder einem anderen auf Berechtigungen basierenden Betriebssystem beschäftigt haben, ist es etwas, worüber sie Fragen stellen müssen. Ich werde versuchen, sie alle so gut wie möglich zu beantworten.
Berechtigungen
Bevor wir root definieren, ist es wichtig zu verstehen, warum es existiert und wie es funktioniert. Dies liegt daran, dass Android Berechtigungen (genauer gesagt Linux-basierte Berechtigungen) in der Dateistruktur verwendet. Jede Datei, jeder Ordner und jede Partition verfügt über eine Reihe von Berechtigungen. Diese Berechtigungen entscheiden, wer eine Datei lesen (den Inhalt anzeigen oder darauf zugreifen kann, ohne ihn zu ändern), in eine Datei schreiben (den Inhalt dieser Datei ändern oder eine neue Datei in einem Ordner oder einer Partition erstellen zu können) und eine Datei ausführen kann (Führen Sie die Datei aus, wenn es sich um einen Typ handelt, der ausgeführt werden kann, z. B. eine App.) Dies erfolgt basierend auf Benutzern und Berechtigungen - bestimmte Benutzer haben Zugriff, während Benutzer, die nicht über die richtigen Berechtigungen verfügen, blockiert werden.
Wenn Sie Ihr Telefon zum ersten Mal einrichten und zum ersten Mal einschalten, wird Ihnen eine Benutzer-ID zugewiesen. Wenn sich ein anderer Benutzer über Google anmeldet, wird ihm eine andere Benutzer-ID zugewiesen. Wenn eine App auf Ihrem Telefon installiert ist, wird ihr auch eine eigene Benutzer-ID zugewiesen. Das System selbst ist ein Benutzer, und andere Prozesse, die auf Ihrem Telefon ausgeführt werden müssen, verfügen möglicherweise über eine eigene Benutzer-ID. Alles, was mit Dateien auf Ihrem Android alles tun kann, ist ein Benutzer.
Mit einem System von Benutzern und Berechtigungen verfolgt Android, wer was tun kann.
Angenommen, Sie installieren eine Messaging-App. Bei der Installation wird ihm eine Benutzer-ID zugewiesen. Es bekommt auch einen Platz auf Ihrer eigenen Datenpartition, auf den nur es Zugriff hat. Sie haben die Berechtigung, die App auszuführen, und wenn die App ausgeführt wird, hat sie die Berechtigung, auf ihren eigenen Datenordner und ihre eigenen Dateien zuzugreifen. Die App kann auch die Erlaubnis zum Zugriff auf Dinge wie Ihr Adressbuch, Ihre SD-Karte oder Ihre Fotobibliothek anfordern. Wenn Sie diesen Anforderungen zustimmen (oder den Berechtigungen für ältere Android-Versionen zustimmen), wird der Benutzer-ID der App die Berechtigung für die Datendateien dieser Elemente erteilt, dh, sie kann den Datenordner und dessen Inhalt anzeigen und möglicherweise ändern sie oder neue Dateien hinzufügen. Die App kann nicht auf Datendateien zugreifen, für die sie keine Berechtigung zum "Ansehen" besitzt. Das heißt, (in unserem Beispiel) es kann nicht in die Einstellungsdatenbank eingesehen werden oder auf den Datenordner einer anderen Anwendung zugegriffen werden. Der Begriff Sandbox wird häufig verwendet - Apps sind mit Sandboxen versehen und können nur in den Sandboxen abgespielt werden, für die sie die Berechtigung haben, sich in dieser zu befinden.
Für Dateien, die Programme sind und ausgeführt werden können (wie Apps), gilt dasselbe Berechtigungsmodell. Ihre Benutzer-ID hat die Berechtigung, die von Ihnen installierten Apps auszuführen, während Sie angemeldet sind. Der Systembenutzer hat die Berechtigung, diese Apps auszuführen, und andere Benutzer auf Systemebene haben möglicherweise Zugriff auf die Apps oder bestimmte Prozesse, die die Apps verwenden. Andere Apps können keine Apps starten, für die sie keine Startberechtigung haben. Wenn Sie einen sekundären Benutzer hinzugefügt haben, haben diese keinen Zugriff auf Ihre Apps oder Dateien und umgekehrt. Auf Ihrem Telefon befinden sich Dateien, Ordner und Apps, für die Ihre Benutzer-ID keine Berechtigung zum Anzeigen, Ändern oder Ausführen hat. Normalerweise erfordern diese Teile von Android Berechtigungen auf Systemebene (die Systembenutzer-ID), um etwas damit zu tun, und Sie sind nicht der Systembenutzer oder ein Benutzer mit Berechtigungen auf Systemebene.
Berechtigungen wechseln
Obwohl es technisch möglich ist, die Art und Weise zu ändern, in der Ihr Telefon gestartet wird, und die Dateien, die es zum Starten des laufenden Systems und zum Zuweisen erhöhter Berechtigungen für Ihre Benutzer-ID verwendet, ist dies weder sicher noch praktisch. Aber Android (und die meisten Unix- oder Linux-basierten Systeme) haben so genannte Root-Benutzer und unterstützen die SubstituteUser-Binärdatei (stellen Sie sich eine Binärdatei als kleine App vor), um Benutzer-IDs zu ändern. Diese werden verwendet, um das System auf der Kernebene zu verwalten.
Da die Leute, die Ihr Telefon erstellt haben, nicht möchten, dass Sie einen einfachen Zugriff auf die Root-Benutzer-ID haben - und nicht alle Gründe sind egoistisch, weil sie Sie und Ihre privaten Daten schützen -, ist die SubstituteUser-Binärdatei in den meisten Builds von nicht enthalten Android. Ohne SubstituteUser können wir unsere Benutzer-ID nicht ändern. Die meisten Dinge auf Systemebene in Android haben übrigens ähnliche einfache Namen. Die Kernsicherheit (Dateien im Bootloader und / oder im Kernel selbst) ist auch so aufgebaut, dass Sie im Rahmen des SELinux-Kernelmoduls (Security Enhanced Linux - die Namen sind einfach) nicht die Benutzer-ID wechseln können. Einige Handys (Samsung's Knox) verfügen über einen weiteren Schutz, und fast alle Unternehmen, die Androids herstellen, verlangen, dass der Bootloader zum Vornehmen von Änderungen entsperrt werden muss, damit diese Dateien geändert werden können und Sie die Benutzer-IDs wechseln können. Einige Telefone, wie das BlackBerry Priv, gehen sogar noch einen Schritt weiter und booten nicht, wenn wir etwas ändern (selbst wenn wir könnten).
Um root zu werden, müssen Sie Ihre Benutzer-ID ändern.
Sobald wir damit fertig sind, können wir die SU-Binärdatei (SubstituteUser) an einer Stelle platzieren, an der sie ausgeführt werden kann, wenn sie aufgerufen wird. Dies wird als PATH bezeichnet. Wenn sich eine App im PATH Ihrer Benutzer-ID befindet, wird sie ausgeführt, ohne dem System genau mitzuteilen, wo sie sich befindet. Sie müssen auch sicherstellen, dass sich die SU-Binärdatei an einer Stelle befindet, an der Ihre Benutzer-ID über die Berechtigung zum Ausführen von Dateien verfügt. Alle anderen Apps (Google Play verfügt über zahlreiche Apps, für die Root-Berechtigungen erforderlich sind) benötigen denselben Zugriff. Wenn Sie eine Methode zum Rooten Ihres Telefons verwenden, wird all dies von den Leuten aussortiert, die die Root-Methode erstellt haben.
Sobald alles vorhanden ist, können wir die SU-Binärdatei ausführen (oder eine andere App kann die SU-Binärdatei ausführen).
Root-Zugriff erhalten
Hier kommt root ins Spiel. Die SU-Binärdatei verwendet Flags, wenn sie ausgeführt wird, um dem System mitzuteilen, zu welcher Benutzer-ID Sie wechseln möchten. Wenn ich zum Beispiel die SU-Binärdatei auf meinem Ubuntu-Computer wie folgt ausführe: "su Jim -c nano", führe ich den nano-Befehl als Benutzer Jim aus (nachdem ich Jims Passwort eingegeben habe). Wenn Sie die SU-Binärdatei ohne Flags oder Argumente ausführen, werden Sie zum Root-Benutzer weitergeleitet. Normalerweise müssten Sie ein Passwort eingeben, aber da "root" ein unbenutzter Benutzer auf Android ist, hat es kein Passwort. Wenn Sie den Befehl "su" ausführen, wechseln Sie zum Benutzer root, weisen Ihnen die Benutzer-ID 0 zu und werden in die Root-Gruppe aufgenommen. Sie sind jetzt der Super User.
Als Superuser können Sie auf Ihrem Android-Gerät mit jeder Datei, jedem Ordner oder jeder Partition etwas anfangen. Mit irgendetwas meinen wir wörtlich alles. Sie können Bloatware-Apps und wichtige Systemdateien entfernen, die Ihr Telefon beschädigen. Sie können auch Dinge an der Hardware vornehmen, z. B. die CPU-Frequenz ändern und Ihr Telefon für immer ruinieren.
Root ist der Superuser, der alles kann. Und wir meinen alles.
Apps können dasselbe tun. SU wird dort platziert, wo es in der Anwendung PATH ist, und jede App kann es aufrufen und ausführen. Diese App verfügt dann über Super-User-Berechtigungen und kann an jedem Ort auf Ihrem Telefon mit jeder Datei beliebige Aktionen ausführen. Aus diesem Grund möchten die Personen, die Ihr Telefon erstellt haben, nicht, dass Sie über diese Zugriffsberechtigung verfügen, und die Unternehmen, die es Ihnen ermöglichen, den Bootloader zu entsperren und Änderungen vorzunehmen, platzieren die SU-Binärdatei weiterhin nicht standardmäßig auf Ihrem Telefon. Der Root-Zugriff ohne Kontrolle darüber, wer oder was ihn verwenden kann, ist gefährlich für die Software Ihres Telefons und Ihre persönlichen Daten.
Aus diesem Grund müssen Sie eine App installieren, die Sie zwingt, den Root-Zugriff jedes Mal zuzulassen, wenn Sie oder eine andere App versuchen, die Super-User-Berechtigungen aufzurufen. In den meisten Fällen, in denen Sie eine Root-Methode für Ihr Telefon verwenden, ist eine enthalten, zusammen mit einigen anderen nützlichen Binärdateien wie dem BusyBox-Toolset. Wenn Sie die Dinge von Hand gemacht haben, müssen Sie selbst eine installieren. SuperSU von Chainfire in Google Play ist ein guter Einstieg.
Krimskrams
Viele Telefone und einige Root-Methoden verhalten sich etwas anders (Android 4.3 brachte viele Änderungen mit sich) und erfordern Skripte oder einen Daemon (Sie werden Wörter wie daemonsu oder su.d finden), anstatt nur die SU-Binärdatei an Ort und Stelle abzulegen. Diese werden zum Aufrufen von SubstituteUser verwendet, sodass Sie wie bei der rohen binären Methode zum Root-Benutzer wechseln können. Die Leute, die herausgefunden haben, wie Sie Ihr Telefon rooten können, haben all dies geklärt und es wird auf der dem Benutzer zugewandten Seite genauso funktionieren.
Es ist auch möglich, einige Androiden vorübergehend zu "wurzeln". Dies bedeutet, dass Sie über Superuser-Berechtigungen verfügen und einige Aufgaben ausführen können, bei einem Neustart wird jedoch der Root-Zugriff aufgehoben. Ebenso können Sie ein "Shell-Root" haben, bei dem Sie nur über adb von Ihrem Computer aus auf den Root-Benutzer zugreifen können.
Abschließend möchte ich betonen, dass Sie, wenn Sie diese Fragen hatten, überlegen müssen, ob Sie bereit sind, ein gerootetes Android zu haben. Wir machten keine Witze, als wir sagten, dass es einfach ist, Ihr Telefon mit SuperUser-Zugriff zu ruinieren. Es gibt keinen Grund, sich zu schämen, dass Sie ein wenig lesen oder noch ein paar Fragen stellen müssen, bevor Sie Dinge tun, die Ihr Telefon beschädigen oder einer zufälligen Rouge-App Zugriff auf alle Ihre Daten gewähren können.
Dafür sind wir hier.