Kebijakan SELinux untuk pengujian perangkat

Saat atest menjalankan pengujian perangkat, atest akan mengirimkan biner pengujian dan resource-nya ke partisi /data dan menjalankannya dengan adb shell. Dapat dieksekusi pengujian menggunakan domain SELinux shell; oleh karena itu, terima kebijakan SELinux yang terkait dengan domain shell. Saat perangkat berjalan dalam mode SELinux yang diterapkan, pengujian perangkat yang melanggar kebijakan ini akan gagal dengan error SELinux.

Khususnya, domain shell tidak memiliki aturan allow untuk:

  • Mengakses file di partisi /vendor, termasuk menautkan dengan library yang diinstal ke partisi /vendor.

  • Memanggil antarmuka Binder arbitrer.

Jika pengujian perangkat memerlukan satu atau kedua izin ini, Anda harus menjalankan pengujian dengan izin root. Saat adbd memiliki izin root, adbd menggunakan domain SELinux su di perangkat, bukan shell, yang memiliki lebih banyak hak istimewa.

Untuk menjalankan pengujian perangkat menggunakan izin root, tambahkan properti require_root: true ke definisi modul Soong yang sesuai dalam file 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,
}