tiempo studio solicitar permission permisos nougat ejecución durante cómo android filesystems file-permissions permission-denied android-7.0-nougat

solicitar - permisos gps android studio



Cambios en el sistema de archivos de Android Nougat (2)

Esto se hizo por razones de seguridad y privacidad . Del informe de error:

En el caso de los sistemas de archivos raíz (/) y / sys, no es posible una lista de directorios.

La respuesta oficial de Google:

El comportamiento que estás describiendo funciona según lo previsto. Android proporciona espacios limitados en los que deben ejecutarse las aplicaciones. Estos entornos protegen los datos de las aplicaciones de otras aplicaciones, incluidos los metadatos de las aplicaciones, como el estado del proceso.

/ sys y / proc son conocidos por filtrar información del canal lateral sobre procesos, información que se puede usar para inferir el estado de los procesos. Por ejemplo, se ha documentado durante años que el acceso a / proc se puede usar para monitorear el inicio de la aplicación, lo que permite los ataques de phishing.

Desde el primer lanzamiento de la vista previa del desarrollador de Android N, recibo errores de "permiso denegado" al intentar listar el directorio raíz u otros directorios del sistema. Los permisos en estos directorios no parecían cambiar (por lo que puedo decir).

Pregunta:

¿Qué cambio (s) en Android N causó que estos permisos denegaran errores?

Cómo replicar:

En el shell de ADB, ejecute los siguientes comandos:

run-as com.debuggable.packagename ls /

Esto da permiso de error denegado en Android N.

Por qué listar directorios del sistema:

Noté este comportamiento en Android N con varios administradores de archivos. Ya no podían listar el directorio raíz u otros archivos del sistema. Esto también limita la salida de la ejecución de ps en un shell. Los cambios también hicieron que esta library dejara de funcionar en Android N.


Hubo dos grupos de cambios que redujeron el acceso a / proc.

El sistema de archivos procfs ahora está montado con hidepid = 2, eliminando el acceso a los directorios / proc / PID de otros usuarios. Este cambio se implementó en CopperheadOS y luego se adoptó en base a él. Hay un grupo para hacer excepciones, pero no está expuesto como un permiso. Solo se utiliza para hacer excepciones para algunos procesos en el sistema base. Podría ser expuesto como un permiso ''peligroso'' y es lo que esperaba que Google terminara haciendo, pero decidieron que los usuarios no entenderían las implicaciones de eso.

https://android-review.googlesource.com/#/c/181345/

Las políticas de SELinux también se hicieron mucho más estrictas. Para las aplicaciones, ya no hay acceso de línea de base a / proc, aunque eso solo se aplica a archivos que no sean los directorios / proc / PID. Todavía hay acceso a algunos archivos con etiquetas que no se ajustan a la política general de proc, pero en su mayoría ya no existe. Esto ha sido gradual y hay muchos compromisos relevantes. Uno de los grandes:

https://android-review.googlesource.com/#/c/105337/

Esto no solo elimina una gran cantidad de información obvia, sino que también cierra algunos agujeros de seguridad más evidentes que involucran canales laterales que permiten cosas como el registro de entrada del teclado:

Las políticas de SELinux también se han vuelto mucho más estrictas en general con el tiempo. Puede ver el resto de eso en el repositorio de platform/system/sepolicy . Tenga en cuenta que estuvo en la platform/external/sepolicy durante mucho tiempo pero recientemente se movió.