डिवाइस की जांच के लिए SELinux नीतियां

जब atest डिवाइस की जांच करता है, तब atest टेस्ट बाइनरी और उसके संसाधनों को /data पार्टीशन में पुश करता है. इसके बाद, adb shell की मदद से इसे एक्ज़ीक्यूट करता है. टेस्ट एक्ज़ीक्यूटेबल, shell SELinux डोमेन का इस्तेमाल करता है. इसलिए, shell डोमेन से जुड़ी SELinux नीतियां पाएं. जब डिवाइस, SELinux के एनफ़ोर्स्ड मोड में काम कर रहा होता है, तब इन नीतियों का उल्लंघन करने वाले डिवाइस टेस्ट, SELinux से जुड़ी गड़बड़ी के साथ फ़ेल हो जाते हैं.

खास तौर पर, shell डोमेन में allow के ये नियम नहीं हैं:

  • /vendor पार्टीशन पर मौजूद फ़ाइलें ऐक्सेस करना. इसमें /vendor पार्टीशन पर इंस्टॉल की गई लाइब्रेरी से लिंक करना भी शामिल है.

  • किसी भी बाइंडर इंटरफ़ेस को कॉल करें.

अगर किसी डिवाइस टेस्ट के लिए इनमें से एक या दोनों अनुमतियों की ज़रूरत है, तो आपको root अनुमतियों के साथ टेस्ट चलाना ज़रूरी है. जब adbd के पास रूट अनुमतियां होती हैं, तब adbd डिवाइस पर shell के बजाय su SELinux डोमेन का इस्तेमाल करता है. shell के पास ज़्यादा अनुमतियां होती हैं.

रूट अनुमतियों का इस्तेमाल करके डिवाइस टेस्ट चलाने के लिए, Android.bp फ़ाइल में, Soong मॉड्यूल की परिभाषा में require_root: true प्रॉपर्टी जोड़ें.

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