Политики SELinux для тестов устройств

Когда atest запускает тесты устройств, atest загружает тестовый исполняемый файл и его ресурсы в раздел /data и запускает его с помощью adb shell . Исполняемый файл теста использует домен SELinux shell ; следовательно, он получает политики SELinux. связан с доменом shell . Когда устройство работает в режиме принудительного использования SELinux, тесты устройства, нарушающие эти правила, завершаются ошибкой SELinux.

Следует отметить, что для домена shell отсутствуют правила, allow следующее:

  • Доступ к файлам в разделе /vendor , включая установление связей с библиотеками, размещенными в разделе /vendor .

  • Вызовите произвольный интерфейс Binder.

Если для тестирования устройства требуется одно или оба этих разрешения, то тест необходимо запускать с правами root . Когда adbd имеет права root, adbd использует домен SELinux su на устройстве вместо shell , которая имеет больше привилегий.

Для запуска теста устройства с использованием прав root добавьте свойство require_root: true в соответствующее определение модуля Soong в файле 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,
}