นโยบาย SELinux สำหรับการทดสอบอุปกรณ์

เมื่อ atest เรียกใช้การทดสอบอุปกรณ์ atest จะพุชไบนารีการทดสอบและทรัพยากรของไบนารีนั้น ไปยังพาร์ติชัน /data และเรียกใช้ด้วย adb shell ไฟล์ที่เรียกใช้งานได้สำหรับการทดสอบ ใช้โดเมน SELinux ดังนั้นจึงรับนโยบาย SELinux ที่เชื่อมโยงกับโดเมน shellshell เมื่ออุปกรณ์ทำงานในโหมด SELinux ที่บังคับใช้ การทดสอบอุปกรณ์ที่ละเมิดนโยบายเหล่านี้จะล้มเหลวพร้อมข้อผิดพลาด SELinux

โปรดทราบว่าโดเมน shellไม่มีกฎallowสำหรับดำเนินการต่อไปนี้

  • เข้าถึงไฟล์ในพาร์ติชัน /vendor รวมถึงลิงก์กับไลบรารีที่ติดตั้งในพาร์ติชัน /vendor

  • เรียกใช้อินเทอร์เฟซ Binder ที่กำหนดเอง

หากการทดสอบอุปกรณ์ต้องใช้สิทธิ์เหล่านี้อย่างใดอย่างหนึ่งหรือทั้ง 2 อย่าง คุณต้องเรียกใช้ การทดสอบโดยมีrootสิทธิ์ เมื่อ adbd มีสิทธิ์รูท adbd จะใช้ โดเมน su SELinux ในอุปกรณ์แทน shell ซึ่งมี สิทธิ์มากกว่า

หากต้องการเรียกใช้การทดสอบอุปกรณ์โดยใช้สิทธิ์รูท ให้เพิ่ม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,
}