Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Directorios, reglas y sepolicy

Esta página describe el diseño del directorio para dispositivos que ejecutan Android 8.0 y superior, las reglas VNDK y la política de seguridad asociada.

Diseño de directorio

El diseño de directorio degenerado consta de los siguientes directorios:

  • /system/lib[64] contiene todas las bibliotecas compartidas de marco, incluidas LL-NDK, VNDK y bibliotecas de solo marco (incluidas LL-NDK-Private y algunas bibliotecas con los mismos nombres que las de VNDK-SP).
  • /system/lib[64]/vndk-sp contiene bibliotecas VNDK-SP para HAL del mismo proceso.
  • /vendor/lib[64] contiene las bibliotecas VNDK extendidas por el proveedor (ya sea bibliotecas DXUA o DXUX VNDK), implementaciones de HAL del mismo proceso y otras bibliotecas compartidas de proveedores.
  • /vendor/lib[64]/vndk-sp puede contener las bibliotecas VNDK-SP extendidas por el proveedor.

Los módulos de proveedores cargan las bibliotecas VNDK desde /system/lib[64] .

Reglas de VNDK

Esta sección proporciona una lista completa de reglas de VNDK:

  • Los procesos del marco no deben cargar bibliotecas compartidas que no sean SP-HAL de particiones de proveedores (se aplica estrictamente a partir de Android 8.1).
  • Los procesos del proveedor no deben cargar bibliotecas que no sean LL-NDK, no VNDK-SP ni VNDK desde la partición del sistema. (no se aplica estrictamente en Android O, pero estará en una versión futura).
  • Las bibliotecas VNDK instaladas deben ser un subconjunto de las bibliotecas VNDK elegibles definidas por Google.
  • Las dependencias externas de SP-HAL y SP-HAL-Dep deben restringirse a LL-NDK o bibliotecas VNDK-SP definidas por Google.
    • Las dependencias de una biblioteca compartida SP-HAL deben restringirse a bibliotecas LL-NDK, bibliotecas VNDK-SP definidas por Google, otras bibliotecas SP-HAL y / o bibliotecas compartidas de otros proveedores que se pueden etiquetar como bibliotecas SP-HAL-Dep .
    • Una biblioteca compartida de un proveedor se puede etiquetar como biblioteca SP-HAL-Dep solo si no es una biblioteca AOSP y sus dependencias están restringidas a bibliotecas LL-NDK, bibliotecas VNDK-SP definidas por Google, bibliotecas SP-HAL y / o otras bibliotecas SP-HAL-Dep.
  • VNDK-SP debe ser autónomo. libRS_internal.so recibe un tratamiento especial en Android 8.0, pero se revisará en una versión futura.
  • No hay comunicación entre el marco y el proveedor a través de interfaces que no sean HIDL, incluidos (pero no limitados a) binder, sockets, memorias compartidas, archivos, etc.
  • El tamaño de la partición del sistema debe ser lo suficientemente grande como para contener dos copias de todas las bibliotecas VNDK elegibles y una copia de las bibliotecas compartidas de marco no elegibles.

segundad

Los procesos del marco descritos en esta sección corresponden al coredomain en las políticas públicas, mientras que los procesos del proveedor corresponden al non-coredomain . Por ejemplo, se puede acceder a /dev/binder solo en coredomain y /dev/vndbinder solo en no coredomain .

Políticas similares restringen el acceso a las bibliotecas compartidas en las particiones del sistema y del proveedor. La siguiente tabla muestra los derechos para acceder a bibliotecas compartidas de diferentes categorías:

Categoría Dividir Accesible desde
coredominio
Accesible desde
no coredominio
LL-NDK Sistema Y Y
LL-NDK-Privado Sistema Y Y
VNDK-SP / VNDK-SP-Privado Sistema Y Y
VNDK-SP-Ext Vendedor Y Y
VNDK Sistema Y Y
VNDK-Ext Vendedor norte Y
SOLO FWK Sistema Y norte
FWK-ONLY-RS Sistema Y norte
SP-HAL Vendedor Y Y
SP-HAL-Dep Vendedor Y Y
SOLO VND Vendedor norte Y

LL-NDK-Private y VNDK-SP-Private deben ser accesibles desde ambos dominios porque los no coredomain dominios coredomain indirectamente a ellos. Del mismo modo, SP-HAL-Dep debe ser accesible desde el coredomain porque SP-HAL se basa en él.

same_process_hal_file etiqueta

Las siguientes bibliotecas existen en la partición del proveedor. Haga que estas bibliotecas sean accesibles tanto desde el coredomain como desde el no coredomain .

  • VNDK-SP-Ext en /vendor/lib[64]/vndk-sp
  • SP-HAL en /vendor/lib[64] o /vendor/lib[64]/hw
  • SP-HAL-Dep en /vendor/lib[64] o /vendor/lib[64]/hw

same_process_hal_file explícitamente estos archivos como same_process_hal_file , porque cualquier cosa en la partición del vendor no es accesible por defecto para el coredomain . Agregue líneas similares a las siguientes al archivo file_contexts específico del file_contexts .

/vendor/lib(64)?/hw/libMySpHal\.so        u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/vndk-sp/libBase\.so      u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libBaseInternal\.so      u:object_r:same_process_hal_file:s0