¿Cómo arreglar los permisos de archivos en Android 5 para que una determinada aplicación pueda acceder a ciertos archivos?

Antecedentes: tenía un Nexus 4 rooteado con Android 4.4.4 que funcionaba bien. Luego recibí la notificación para actualizar a Android 5. Con este fin, mostré la recuperación de stock para Android 4.4.4 de Google y comencé la actualización (pero no desrooteé el teléfono, tal vez fue un error). El proceso de actualización en sí se realizó sin problemas. Después de la actualización, volví a flashear TWRP 2.8.2 y volví a rootear con SuperSU 2.36 e hice una copia de seguridad.

Entonces, me di cuenta de que faltaban algunos datos (fotos, E-Books, …). Bueno, en realidad no falta, pero se encuentra en un directorio falso "0" (/storage/emulated/0/0). Además, cuando intenté acceder a mi carpeta de libros electrónicos directamente con FBReader, me dijo que no había suficientes permisos para acceder al directorio.

Primero, probé el botón "Reparar permisos" en TWRP, pero eso me puso en un bucle de arranque. Después de restaurar la copia de seguridad, usé el administrador de archivos TWRP para mover todos los datos del falso directorio "0" a donde pertenecen y eliminé el directorio "0" ahora vacío. Al reiniciar una vez más, apareció la pantalla "Optimización de aplicaciones", pero solo para 7 aplicaciones. Ahora puedo acceder a mis libros electrónicos nuevamente, pero aún no hay fotos (antiguas) en la aplicación de fotos de Google. Las fotografías tomadas después de la copia de seguridad aparecen bien. Con el administrador de archivos o la terminal, puedo acceder a todas las fotos sin problemas una vez que llamo setenforce 0. Los permisos mostrados por ls -Z /storage/emulated/0/DCIM/Camerase parecen en todas las fotos, tanto visibles como invisibles en la aplicación de fotos:-rw-rw---- root sdcard_r u:object_r:fuse:s0. Entonces, supongo que hay algún permiso adicional de SELinux que debo configurar en los archivos de imagen más antiguos para que la aplicación de fotos pueda acceder a ellos. Por lo tanto, mi pregunta es: ¿qué conceptos de permisos están en funcionamiento aquí y qué comandos son necesarios para asignar archivos/directorios a una determinada aplicación? Gracias.

Actualización: acabo de enterarme de que puedo tomar nuevas fotos solo con setenforce 0, por lo que tiene que haber alguna falla importante de SELinux en alguna parte.

Respuestas (1)

Intente usar Supersu 2.49 beta para Lollipop (LP) 5.0.

Haz un desrooteo completo primero.

Tengo LP 5.0 Touchwiz en mi pestaña Samsung con SElinux aplicando y funcionando como raíz. La versión de Supersu en su recuperación probablemente se pueda reemplazar desempaquetando su recuperación con cualquier cantidad de métodos y/o conjuntos de herramientas, y reemplazando el archivo. El mejor enfoque sería actualizar su recuperación si hay una disponible. Además, los scripts de permisos fijos necesitan un enfoque diferente/nuevo a partir de Android 5.0.

Este es mi script de permisos de corrección imperfecta para mi otra pestaña de Samsung que ejecuta LP 5.1.1:

#!/system/bin/sh
mount -o rw,remount /system
find -type d -exec chmod 755 {} \;
find -type d -name '.*' -exec chmod 755 {} \;
find -type f -name '.*' -exec chmod 644 {} \;
find -type f -name '.su' -exec chmod 755 {} \;
find -type f -exec chmod 755 {} \;
find -type f -name '*.h' -exec chmod 644 {} \;
find -type f -name '*.a' -exec chmod 644 {} \;
find -type f -name '*.o' -exec chmod 644 {} \;
find -type f -name '*.so' -exec chmod 644 {} \;
find -type f -name '*.so.*' -exec chmod 644 {} \;
find -type f -name '*.c' -exec chmod 644 {} \;
find -type f -name '*.cpp' -exec chmod 644 {} \;
find -type f -name '*.cgf' -exec chmod 644 {} \;
find -type f -name '*.xml' -exec chmod 644 {} \;
¡Hola! ¿Puedo saber cómo llegó a la conclusión de que los permisos de esos archivos deberían ser los que ha escrito? Supongo que comparó su ROM con una instalación limpia y verificó los permisos, o tal vez tomó la información de una fuente pero olvidó mencionarla.
@Firelord buen punto, los directorios bien derp siempre son 755 a menos que esté sucediendo algo especial. binarios, scripts y, en algunos casos, bibliotecas [especiales] siempre son 755 bibliotecas compartidas, bibliotecas estáticas, archivos de configuración, xml, cfg, config, txt, etc., siempre son 644. Es casi universal con pocas excepciones especiales y es el " esquema "estándar" de Android. En 5.0 y posteriores, los bloqueos de directorios son administrados por selinux independientemente de la propiedad o el modo.