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

Capacidades ambientales

Las capacidades permiten que los procesos de Linux eliminen la mayoría de los privilegios de root mientras retienen el subconjunto de privilegios que requieren para realizar su función. La implementación original de las capacidades hizo imposible que los procesos fork + exec'd heredaran capacidades a menos que los archivos que se estaban ejecutando tuvieran capacidades de archivo configuradas. Las capacidades de archivo, a su vez, presentan un riesgo de seguridad, ya que cualquier proceso que ejecute un archivo con capacidades de archivo podrá obtener esas capacidades.

Las capacidades ambientales permiten que los servicios del sistema lanzados por init configuren capacidades en sus archivos .rc , llevando la configuración a un solo archivo en lugar de dividir la configuración en el archivo fs_config.c . Esto significa que para cualquier servicio lanzado por init, puede usar el archivo .rc asociado con el servicio para configurar las capacidades de ese servicio.

Las capacidades ambientales son el mecanismo preferido para configurar las capacidades de los servicios lanzados por init (este método mantiene todos los aspectos de la configuración del servicio en un solo archivo .rc ). Recomendamos usar las capacidades ambientales en lugar de configurar las capacidades del sistema de archivos usando la sección de mayúsculas en los archivos config.fs .

Al configurar las capacidades para los servicios que init no inicia , continúe configurando las capacidades del sistema de archivos mediante fs_config.c .

Habilitación de capacidades ambientales

Para habilitar las capacidades ambientales para un servicio dado, use la palabra clave capabilities en init. Para obtener detalles sobre el idioma de inicio actual, consulte init README.md .

Por ejemplo, para habilitar las capacidades ambientales para el servicio wificond AOSP, el archivo .rc para el servicio wificond configura el usuario y los grupos apropiados y le da al servicio las capacidades especificadas usando la palabra clave de capabilities :

service wificond /system/bin/wificond
    class main
    user wifi
    group wifi net_raw net_admin
    capabilities NET_RAW NET_ADMIN

Implementación de referencia

La implementación de referencia es el kernel común de Android https://android.googlesource.com/kernel/common/

Parches necesarios

Los parches necesarios se han transferido a todas las ramas comunes del kernel de Android relevantes.

El parche de capacidades ambientales principales https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585b9de0e8932b0fdb08 se ha publicado en:

Una pequeña corrección de seguridad https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3 se ha publicado en:

Validación

Las pruebas unitarias biónicas incluyen pruebas unitarias para las capacidades ambientales. Más allá de eso, usar la palabra clave "capacidades" en el inicio de Android para un servicio, y luego verificar que el servicio obtenga las capacidades esperadas, permitiría probar esta característica en tiempo de ejecución.