Dateien können nicht von einem /data/data/-Verzeichnis in ein anderes kopiert werden (Root)

Ich versuche, eine Datei von /data/data/com.application1/myfilenach zu kopieren/data/data/com.application2/myfile

Die Datei kommt mit Besitzer und Gruppe an, die auf die App eingestellt sind, aus der sie stammt. Ich habe dann den Besitzer geändert und die Anwendung gruppiert, auf der sie ausgeführt wird (eine SSH-Anwendung).

Die Berechtigungen ändern sich, aber der Zugriff wird mir immer noch verweigert. Ich habe versucht zu verwenden, chattr -i myfileaber das Problem ist immer noch da. Gibt sogar chmod 777immer noch Zugriff verweigert.

user@htc_m8:/data/data/org.galexander.sshd/home $ /system/bin/whoami
u0_a149

user@htc_m8:/data/data/org.galexander.sshd/home $ /system/bin/ls -la
-rwx------ u0_a149  u0_a149        10 2018-06-23 16:23 myfile

user@htc_m8:/data/data/org.galexander.sshd/home $ /system/bin/echo test > testfile

user@htc_m8:/data/data/org.galexander.sshd/home $ /system/bin/ls -la
-rwx------ u0_a149  u0_a149        10 2018-06-23 16:23 myfile
-rw------- u0_a149  u0_a149         5 2018-06-23 16:37 testfile

user@htc_m8:/data/data/org.galexander.sshd/home $ /system/bin/cat testfile
test

user@htc_m8:/data/data/org.galexander.sshd/home $ /system/bin/cat myfile
cat: myfile: Permission denied

Ich habe busybox installiert, aber im Beispiel verwende ich native Befehle, aber die busybox-Befehle geben die gleiche Ausgabe.

Ich kann einfach nicht sehen, was an der Datei, die ich erstellt habe, anders ist als an der, die ich kopiert habe. Gleicher Eigentümer/Gruppe/Berechtigungen.

Antworten (1)

Android läuft im "SELinux"-Modus. Mehr Informationen hier SELinux-Konzepte

Das bedeutet, dass es zusätzlich zu den Standard-Linux-Berechtigungen auch zusätzliche Attribute angehängt hat.

Beim Laufen attr -l myfilezeigte sich folgendesAttribute "selinux" has a 38 byte value for myfile

Mit /system/bin/ls -alZkönnen Sie den Wert des Selinux-Attributs sehen.

-rwx------ u0_a141  u0_a141           u:object_r:app_data_file:s0 myfile
-rw------- u0_a141  u0_a141           u:object_r:app_data_file:s0:c512,c768 testfile

Der Datei, die ich kopiert habe, fehlten am Ende einige zusätzliche Daten, c512,c768ich nehme an, das ist so etwas wie eine AppID.

Durch Ausführen su -c restorecon myfilewurde dies behoben und die Datei mit dem richtigen Attributwert wiederhergestellt. Ref: Erklärung des chcon-Befehls - Post