O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Capacidades Ambientais

Os recursos permitem que os processos do Linux eliminem a maioria dos privilégios de root enquanto retêm o subconjunto de privilégios de que precisam para realizar suas funções. A implementação original de recursos tornou impossível para os processos fork + exec herdarem recursos, a menos que os arquivos em execução tivessem recursos de arquivo configurados. Os recursos de arquivo, por sua vez, apresentam um risco de segurança, pois qualquer processo que execute um arquivo com recursos de arquivo será capaz de obter esses recursos.

Os recursos de ambiente permitem que os serviços do sistema iniciados pelo init configurem recursos em seus arquivos .rc , trazendo a configuração em um único arquivo em vez de dividir a configuração no arquivo fs_config.c . Isso significa que, para qualquer serviço iniciado pelo init, você pode usar o arquivo .rc associado ao serviço para configurar os recursos desse serviço.

Recursos de ambiente são o mecanismo preferido para definir recursos para serviços iniciados por init (este método mantém todos os aspectos da configuração de serviço em um único arquivo .rc ). Recomendamos o uso de recursos de ambiente em vez de configurar os recursos do sistema de arquivos usando a seção caps nos arquivos config.fs .

Ao definir recursos para serviços não iniciados pelo init , continue a configurar os recursos do sistema de arquivos usando fs_config.c .

Habilitando recursos ambientais

Para habilitar recursos de ambiente para um determinado serviço, use a palavra-chave capabilities em init. Para obter detalhes sobre o idioma init atual, consulte o init README.md .

Por exemplo, para habilitar recursos de ambiente para o serviço AOSP wificond , o arquivo .rc para o serviço wificond configura o usuário e grupos apropriados e fornece ao serviço os recursos especificados usando a palavra-chave capabilities :

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

Implementação de referência

A implementação de referência é o kernel comum Android https://android.googlesource.com/kernel/common/

Patches necessários

Os patches necessários foram transferidos para todos os ramos de kernel comuns do Android relevantes.

O patch de recursos de ambiente principal https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585b9de0e8932b0fdb08 foi retroativo em:

Uma pequena correção de segurança https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3 foi retransmitida em:

Validação

Os testes de unidade biônica incluem testes de unidade para recursos ambientais. Além disso, usar a palavra-chave "capacidades" no init do Android para um serviço e, em seguida, verificar se o serviço obtém os recursos esperados permitiria o teste de tempo de execução desse recurso.