Zasady SELinux dotyczące testów urządzeń

Gdy atest uruchamia testy urządzenia, przesyła binarny plik testu i jego zasoby do partycji /data i wykonuje go za pomocą polecenia adb shell.atest Plik wykonywalny testu używa domeny SELinux shell; dlatego otrzymuje zasady SELinux powiązane z domeną shell. Gdy urządzenie działa w trybie wymuszania SELinux, testy urządzenia, które naruszają te zasady, kończą się niepowodzeniem z powodu błędu SELinux.

W szczególności domena shell nie ma reguł allow umożliwiających:

  • dostęp do plików na partycji /vendor, w tym łączenie z bibliotekami zainstalowanymi na partycji /vendor;

  • wywoływanie dowolnego interfejsu Binder.

Jeśli test urządzenia wymaga jednego lub obu tych uprawnień, musisz uruchomić go z uprawnieniami root. Gdy adbd ma uprawnienia roota, adbd używa na urządzeniu domeny SELinux su zamiast domeny shell, która ma więcej uprawnień.

Aby uruchomić test urządzenia z uprawnieniami roota, dodaj właściwość require_root: true do odpowiedniej definicji modułu Soong w pliku 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,
}