Ich versuche, eine Datei von /data/data/com.application1/myfile
nach 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 myfile
aber das Problem ist immer noch da. Gibt sogar chmod 777
immer 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.
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 myfile
zeigte sich folgendesAttribute "selinux" has a 38 byte value for myfile
Mit /system/bin/ls -alZ
kö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,c768
ich nehme an, das ist so etwas wie eine AppID.
Durch Ausführen su -c restorecon myfile
wurde dies behoben und die Datei mit dem richtigen Attributwert wiederhergestellt. Ref: Erklärung des chcon-Befehls - Post