כללי מדיניות של SELinux לבדיקות מכשירים

כש-atest מריץ בדיקות של מכשירים, הוא דוחף את קובץ ההפעלה של הבדיקה ואת המשאבים שלו למחיצה /data ומבצע אותו באמצעות adb shell.atest קובץ ההפעלה של הבדיקה משתמש בדומיין SELinux, ולכן מקבל את מדיניות SELinux שמשויכת לדומיין shell.shell כשהמכשיר פועל במצב SELinux מאולץ, בדיקות המכשיר שמפירות את המדיניות הזו נכשלות עם שגיאת SELinux.

חשוב לציין שלדומיין shell אין כללים של allow ל:

  • גישה לקבצים במחיצה /vendor, כולל קישור לספריות שהותקנו במחיצה /vendor.

  • התקשרות לממשק Binder שרירותי.

אם בדיקת מכשיר דורשת אחת מההרשאות האלה או את שתיהן, חובה להריץ את הבדיקה עם הרשאות root. כשיש ל-adbd הרשאות root, ‏ adbd משתמש בדומיין su SELinux במכשיר במקום ב-shell, שיש לו יותר הרשאות.

כדי להריץ בדיקת מכשיר באמצעות הרשאות root, מוסיפים את המאפיין require_root: true לקובץ Android.bp בהגדרת מודול Soong המתאים.

// 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,
}