2 votos

No se pueden copiar archivos de un directorio /data/data/ a otro (Root)

Estoy tratando de copiar un archivo de /data/data/com.application1/myfile a /data/data/com.application2/myfile

El archivo llega con el propietario y el grupo establecidos en la aplicación de la que procede. Luego cambié el propietario y el grupo de la aplicación que lo ejecuta (una aplicación SSH).

Los permisos cambian, pero sigo teniendo el acceso denegado. He probado a utilizar chattr -i myfile pero el problema sigue ahí. Incluso chmod 777 sigue dando acceso denegado.

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

Tengo busybox instalado, pero en el ejemplo estoy usando comandos nativos, sin embargo los comandos de busybox dan la misma salida.

No veo qué diferencia hay entre el archivo que he creado y el que he copiado. El mismo propietario/grupo/permisos.

1voto

mt025 Puntos 106

Android funciona en modo "SELinux". Más información aquí Conceptos de SELinux

Esto significa que además de los permisos estándar de linux también tiene atributos adicionales adjuntos.

Corriendo attr -l myfile mostró lo siguiente Attribute "selinux" has a 38 byte value for myfile

Utilizando /system/bin/ls -alZ puede ver el valor del atributo selinux.

-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

Al archivo que copié le faltaban algunos datos extra al final, c512,c768 Supongo que se trata de algo parecido a un AppID.

Corriendo su -c restorecon myfile ha arreglado esto y ha restaurado el archivo con el valor correcto de los atributos. Ref: Explicación de la orden chcon - Post

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X