Políticas do SELinux para testes de dispositivos

Quando o atest executa testes no dispositivo, ele envia o binário de teste e os recursos dele para a partição /data e o executa com adb shell.atest O executável de teste usa o domínio SELinux shell. Portanto, receba as políticas do SELinux associadas ao domínio shell. Quando o dispositivo está em execução no modo SELinux aplicado, os testes que violam essas políticas falham com um erro do SELinux.

O domínio shell não tem regras allow para:

  • Acessar arquivos na partição /vendor, incluindo a vinculação com bibliotecas instaladas na partição /vendor.

  • Chame uma interface Binder arbitrária.

Se um teste de dispositivo precisar de uma ou ambas as permissões, você precisa executar o teste com permissões root. Quando o adbd tem permissões de root, ele usa o domínio su do SELinux no dispositivo em vez do shell, que tem mais privilégios.adbd

Para executar um teste de dispositivo usando permissões de root, adicione a propriedade require_root: true à definição do módulo Soong correspondente no arquivo Android.bp.

// file: Android.bp

rust_test {
    name: "example_rust_test_that requires root",

    // ...

    rustlibs: [
        "some-vendor-lib",
    ],
    // This example test requires root permissions, because it calls Binder
    // interfaces unavailable for the shell, and also links with a vendor
    // library.
    require_root: true,
}