Ein echter Root kann nichts an /system-Originaldateien ändern!

Auf meinem gerooteten Gerät mit Android 4.2.2 habe ich folgende Tools installiert:

  1. Terminal-Emulator
  2. BusyBox kostenlos

Im Terminal-Emulator suändert der Befehl den Benutzer erfolgreich in einen echten Root:

root@hwH30-U10:/ # id -u
uid=0(root) gid=0(root)

Dann ich remount /systemals R/W:

root@hwH30-U10:/ # mount | grep system
/emmc@android /system ext4 rw,realtime,noauto_da_alloc,commit=1,data=ordered 0 0

Dann habe ich sogar:

root@hwH30-U10:/ # chmod 777 /system

Aber ich kann nichts ändern zB Berechtigungen oder Inhalte von /systemOriginaldateien wie /system/build.prop!

Ich bin mir sicher, dass Berechtigungen und Bereitstellungen in Ordnung sind, da ich eine neue Datei erstellen /system/tmp.prop, deren Inhalt und Berechtigungen per Terminal-Emulator ändern kann.

Ich habe wirklich keine Ahnung, warum diese Operationen nicht erlaubt sind, während aus Linux-Sicht alle Dinge für root in Ordnung sind, um diese Änderungen vorzunehmen!

Gibt es einen fest codierten weiteren Schutz in Android, zB im Kernel?

Wie kann man das bitte herausfinden?

Was ist das Ergebnis der Ausführung chmod? Haben Sie eine Root-Explorer-App wie ES File Explorer im Root-Modus ausprobiert, um die Dateiberechtigungen zu ändern? Was ist Ihre Root-Management-App und Android-Version?
Ich verwende SuperSU, 3C Toolbox und BusyBox auf Marshmallow und KitKat ohne Probleme.
@TamoghnaChowdhury, chmodsagt Operation not permitted. und ja, ES File Explorer im Root-Modus, FileExpert und viele andere Apps können nichts ändern! Meine Root-Management-App ist KingRootauf Android 4.2.2 (wie ich bereits erwähnt habe, id -usagt Terminal Emulatormir, dass ich wirklich Root mit der ID 0 bin).
Könnte es sein, dass einige SELinux-Erzwingungen vorhanden sind? Nicht sicher, ob das lsauf dem Gerät vorhandene Gerät dies unterstützt, aber Sie könnten es mit einem der Parameter -Z/ --context/ --lcontext/ versuchen --scontext, um einen potenziellen SELinux-Kontext anzuzeigen.
@Izzy, ls -Zsagen Sie nichts zu irgendeinem Kontext, aber Google sagt, dass SELinux ab Version 4.3 in Android integriert wurde. meine ist 4.2.2.
Vom Root-Terminal aus können Sie diese Schritte ausführen: cp /system/build.prop /system/build.prop.orig; echo lolcat > /system/build.prop; cat /system/build.prop; mv /system/build.prop.orig /system/build.prop. Ich interessiere mich für die Ausgabe des cat-Befehls.
@ Firelord, echo lolcat > /system/build.propschlägt fehl , k_shell/10210:17681: can't create /system/build.prop: Permission deniedwie ich vermutet habe. echo lolcat > /system/build.prop.origfunktioniert! und mv /system/build.prop.orig /system/build.propscheitert mit failed on ' /system/build.prop.orig': Operation not permitted, wie ich vermutete. Die Ausgabe des catBefehls ist also nicht interessant; Es ist der ursprüngliche Inhalt.
Interessant. Können Sie das Ergebnis angeben lsattr /system/build.prop?
@Firelord, das Ergebnis von lsattr /system/build.propist -----i--A----, fünf Bindestriche, dann i, dann zwei Bindestriche, dann A und dann vier Bindestriche.
Da ist das Problem. Es ist auf ein unveränderliches Attribut gesetzt, was bedeutet, dass die Datei nicht gelöscht oder geändert werden kann. Ändern Sie es wie folgt: chattr -i /system/build.propund versuchen Sie dann diesen Befehl lsattr. Wenn sich die Ausgabe diesmal unterscheidet, versuchen Sie meine lolcat-Befehle und teilen Sie das Ergebnis mit.
@Firelord, ausgezeichnet! Ich war mir seines iAttributs bewusst, aber unter Linux vikann der Befehl :w!sogar mit diesem Attribut schreiben, aber es scheint, dass das von BusyBox vinicht möglich ist! trotzdem vielen dank! Wenn Sie möchten, fügen Sie eine Antwort hinzu und ich werde sie als Antwort markieren; Oder ich beantworte meine Frage. Danke noch einmal :)
Es ist eigentlich seltsam, wenn vi eine Datei mit unveränderlichem Attribut bearbeiten kann. Sind Sie sicher, dass das Attribut gesetzt wurde, als Sie vi für diese Datei getestet haben? Ich kann selbst mit vi keine Änderungen in der Datei speichern, daher funktioniert das unveränderliche Attribut in meinem System wie erwartet.
@Firelord, Früher bekam ich Nachrichten wie (add ! to override)und :w!konnte schreiben. Aber jetzt habe ich dann eine Datei erstellt chattr +iund du hast Recht, Attribut vikann nicht umgangen iwerden! Leider konnte ich mich nicht an frühere Dateien erinnern, lsattraber ich bin sicher, dass :w!dies einige Nachrichten wie lösen könnte (add ! to override). Aber ich kann es jetzt nicht reproduzieren.

Antworten (1)

Basierend auf meinem Kommentar und Yassers nachfolgendem Kommentar kann ich schließen, dass das Problem das unveränderliche Attribut war, das in der Datei build.prop festgelegt wurde. Wenn andere Dateien und Verzeichnisse ebenfalls nicht bearbeitet oder gelöscht werden können, haben sie möglicherweise auch das gleiche Attribut oder Nur-Anhänge-Attribut.

Die Abhilfe besteht darin, diesen Befehl mit Root-Rechten zu verwenden:

chattr -i FILE_PATH    # FILE_PATH is the file which currently has immutable attribute

Verwenden Sie -iRgefolgt von einem Verzeichnispfad, um unveränderliche Attribute rekursiv aus einem Verzeichnis zu entfernen.

Es ist zu beachten, dass auf OP bereits busybox installiert ist. chattrund lsattrsind nicht die Dienstprogramme, die nativ in Android zu finden sind.

Relevante Informationen zum verwendeten Chattr-Befehl und zum Nur-Anhängen-Attribut finden Sie in meiner Antwort hier .

Ein Hinweis für die Leser: Eine Datei mit unveränderlichem Attribut zeigt an, dass sie nicht bearbeitet, gelöscht, verschoben oder umbenannt werden kann. Informationen zu Linux-kompatiblen Dateiattributen finden Sie hier: linux.die.net/man/1/chattr