Zusammenhänge: flash - partition - recovery - kernel - root ...?

u.k-f schrieb:

Sehr schöner Artikel, macht Lust auf ein A210 ;) Nee, im Ernst: lohnt sich auch wenn man keines hat...

Mir war nicht klar, dass die Systeme so verschieden implementiert sind, - und dennoch gibt es ja Grundstrukturen, die sich wiederholen (weshalb ein Tablet-Guide auch eine interessante Lektüre für Smartphone-User sein kann :) ). Auf jeden Fall dämmern mir so allmählich einige wesentliche Zusammenhänge, und btw. tun sich auch einige Möglichkeiten auf - dass man via adb / fastboot sein Gerät so "fernsteuern" und "fremdbooten" kann war mir beispielsweise nicht klar. Wenn ich mal wieder viiiel Zeit habe, werde ich damit mal spielen...
Wie ein Kernel eine Recovery mitbringen kann ist mir jetzt auch halbwegs klar. Noch nicht klar ist mir, wie der Kernel root-Rechte mitbringt (wenn er es denn tut; meiner tat es, und es scheint ja durchaus üblich zu sein). Rooten heißt su-binary in /system speichern? Wie wird das gemacht, wenn's "im Kernel" inbegriffen ist?

Ich geb's nicht auf, im Gegenteil: allmählich hab' ich richtig Blut geleckt ;)
 
lindenlauf schrieb:
Sehr schöner Artikel, macht Lust auf ein A210 ;) Nee, im Ernst: lohnt sich auch wenn man keines hat...
Danke :smile:
lindenlauf schrieb:
Rooten heißt su-binary in /system speichern? Wie wird das gemacht, wenn's "im Kernel" inbegriffen ist?)

Im Prinzip ja.

Um es genauer auszudrücken: Das su Binary irgendwo speichern, so dass es im 'Path' ist. Der 'Path' ist eine System-Variable, die angibt, in welchen Verzeichnissen geguckt wird, wenn ein Executable (ohne vollständige Pfad-Angabe) aufgerufen wird. Das ist im Allgemeinen /system/bin und /system/xbin, aber auch hier kann es je nach System Unterschiede geben.

Was hat es eigentlich genau mit dem su-Binary auf sich?

Das besondere am su Binary ist jetzt, dass es besondere Zugriffs-Rechte hat.

In Unix-Artigen Systemen gibt es nähmlich folgender Rechte-Struktur:

  • Rechte des Besitzers
  • Rechte aller, die in der Zugeordneten Gruppe sind
  • Rechte aller anderen

Dabei gibt es die Rechte:

  • Lesen (r oder 4 genannt)
  • Schreiben (w oder 2 genannt)
  • Ausführen (x oder 1 genannt)

Daher schreibt man gerne die Zugriffs-Rechte auf eine Datei als drei Blocks zu drei Buchstaben, z.B. 'rwx r-x r-x' was bedeutet:

  • Der Besitzer darf Lesen, Schreiben Ausführen (Erster Block rwx)
  • Die Gruppenmitglieder dürfen Lesen und Ausführen (Zweiter Block r-x)
  • Alle anderen dürfen Lesen und ausführen (Dritter Block r-x)

Oder als drei Ziffern z.B. 755

  • Erste Ziffer Eigentümer 7 = 4+2+1
  • Zweite Ziffer Gruppe 5 = 4+1
  • Dritte Ziffer Andere 5 = 4+1

Aber, was wenig bekannt ist: Es gibt noch eine 4 Stelle, die kann man davor schreiben, die gibt 'Vererbungs-Rechte' an:

  • Vererbe beim Ausführen die Rechte des Besitzers 4
  • Vererbe beim Ausführen die Rechte der Gruppe 2

Somit kann eine Datei nicht nur das Recht 755 wie die meisten Binaries sondern auch das Recht 6755 wie zum Beispiel das su-Binary haben. Wer das su Binary ausführt, erbt somit die Rechte des Besitzers, und da das SU-Binary beim installieren als Besitzer den User root zugewiesen bekommt, erbt man dessen Benutzer und Gruppenrechte, während su ausgeführt wird.

Wie kann ein Kernel Root-Rechte mitbringen?

Genaugenommen ist das nicht der Kernel, der die Root-Rechte mitbringt, sondern es ist ja so, dass der Kernel zusammen mit einer Ramdisk kommt, und in der Ramdist liegt das init-Binary und das init.rc Script. Dieses wird beim starten des Systems ausgeführt, und zwar als Benutzer root. Daher kann man (wenn man einen Kernel und eine Ramdisk zusammen baut) im init.rc Script leicht einbauen, dass ein su-Binary nach /system/bin oder /system/xbin kopiert wird, oder dass zumindest ein Sysmbolischer link in /system/bin oder /system/xbin auf ein irgendwo sonst liegendes su-Binary gesetzt wird. Schon ist nach dem Systemstart ein su-Binary im System verankert.

Des weiteren ist in der Ramdaisk auch noch das default.prop mit drin. In diesem wird festgelegt, ob der adbd-Prozess (den man vom PC über USB per adb Befehle ansteuern kann) über root-Rechte verfügen soll. Wenn der adbd Prozess root-Rechte hat, kann man vom PC aus Befehle mit root-Rechten abschicken, und kann auf diese Weise ebenfalls ein su-Binary an die entsprechenden Stellen des System kopieren.

Teilweise (z.B. bei vielen Acer Geräten) ist es übrigens so, dass der (Standart) Kernel so implementiert ist, dass auf die /system Partition nur lesend zugegriffen werden kann. Dann ist ein CustomKernel nötig, um vollen Zugriff auf das System zu bekommen, weil nur ein CustomKernel Schreibzugriffe auf die /system Partition erlaubt. Das nennt man dann einen 'InsecuredKernel', da Acer seine 'Ich lasse keine Schreibzugriffe auf /system zu'-Implementierung als 'ACER_SECURE_MOUNT' bezeichnet.

Welche Alternativen Möglichkeiten zum rooten gibt es?

Da kann ich keine vollständige Liste anbieten, da es bestimmt für ganz viel Systeme, die ich nicht kenne, Möglichkeiten gibt, die ich nicht kenne. Aber zumindest mal ein paar gängige Möglichkeiten:

  • Wenn es auf dem Gerät ein Recovery gibt, das selbsterstellte ZIPs installieren kann (z.B. CWM oder TWRP) kann man ein ZIP mit dem su Binary darin übers Recovery installieren.
  • Wenn das System alternative Flash-Methoden anbietet, kann ein mit su Binary gepatchtes /system Image geflasht werden.
  • Wenn das Gerät adb Zugriffe als Root zulässt (Es gibt ein paar wenige Geräte bei denen das so ist).
  • Die Bin4ry-Methode (Benannt nach dem Entdecker der Methode, der sich Bin4ry nennt): Zu einem kurzen Zeitpunkt während des Bootens kann man über adb als root zugreifen und auf die /system-Partition schreiben, auch wenn das Gerät eigentlich adb nicht als root zulässt, und auch keine Schreibzugriffe auf /system zulässt. In diesem kurzen Zeitraum wird ein vorbereitetes Paket mit dem su-Binary entpackt und in den entsprechenden Ordner (/system/bin oder /system/xbin) gepackt.

Grüsse Uwe
 
Zuletzt bearbeitet von einem Moderator:
  • Danke
Reaktionen: lindenlauf, Lion13 und Patman75
Moin,
boah, is ja heftige Lektüre am Morgen :D; super erklärt, danke dafür.
MfG

Gesendet von meinem Galaxy Nexus mit der Android-Hilfe.de App
 
Sehr interessant, und wieder was gelernt. Danke! :thumbup:
 
Wow, Danke Uwe!
Ich bin begeistert :)
Wissen macht Spass ;)

Den Artikel sollte man jetzt vielleicht dann doch wegen Allgemeingültig- und Verständlichkeit in einem der Sticky-Threads verlinken?
 
Ich könnte mal eine Zusammenfassung der einzelnen Beiträge zu einem Gesammt-Artikel machen.

MfG Uwe
 
u.k-f schrieb:
Ich könnte mal eine Zusammenfassung der einzelnen Beiträge zu einem Gesammt-Artikel machen.
Das wäre ein gutes Werk!

Ich dachte da auch schon dran, das zusammenzuschreiben, was ich gelernt habe, aber ich fühle mich noch nicht weit genug, habe noch nicht genug Überblick, - es würde noch zu fragmentarisch 'rauskommen. Also wenn Du das in die Hand nimmst... Wenn ich Dich unterstützen kann - Gegenlesen, Feedback aus (nicht mehr ganz)-Newbie-Sicht o.ä. - lass es mich gerne wissen.
 

Ähnliche Themen

B
  • Blooddrunked
Antworten
3
Aufrufe
612
textmarker007
T
K
Antworten
23
Aufrufe
929
Klaus986
K
hucky58
Antworten
3
Aufrufe
602
KalleMerkt
K
Zurück
Oben Unten