ডিভাইস পরীক্ষার জন্য SELinux নীতি

যখন atest ডিভাইস টেস্ট চালায়, atest টেস্ট বাইনারি এবং এর রিসোর্সসমূহকে /data পার্টিশনে পুশ করে এবং adb shell দিয়ে তা এক্সিকিউট করে। টেস্ট এক্সিকিউটেবলটি shell SELinux ডোমেইন ব্যবহার করে; তাই এটি SELinux পলিসিগুলো গ্রহণ করে। shell ডোমেনের সাথে সংযুক্ত। যখন ডিভাইসটি এনফোর্সড SELinux মোডে চলে, তখন যে ডিভাইস টেস্টগুলো এই নীতিগুলো লঙ্ঘন করে, সেগুলো SELinux ত্রুটির সাথে ব্যর্থ হয়।

উল্লেখ্য যে, shell ডোমেইনে নিম্নলিখিতগুলির জন্য allow নিয়ম নেই :

  • /vendor পার্টিশনে থাকা ফাইলগুলো অ্যাক্সেস করুন, যার মধ্যে /vendor পার্টিশনে ইনস্টল করা লাইব্রেরিগুলোর সাথে লিঙ্ক করাও অন্তর্ভুক্ত।

  • যেকোনো একটি বাইন্ডার ইন্টারফেস কল করুন।

যদি কোনো ডিভাইস টেস্টের জন্য এই অনুমতিগুলোর এক বা উভয়টির প্রয়োজন হয়, তাহলে আপনাকে অবশ্যই root পারমিশন নিয়ে টেস্টটি চালাতে হবে । যখন adbd রুট পারমিশন থাকে, তখন adbd ডিভাইসে shell এর পরিবর্তে su SELinux ডোমেইন ব্যবহার করে। আরও সুযোগ-সুবিধা।

রুট পারমিশন ব্যবহার করে ডিভাইস টেস্ট চালানোর জন্য, 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,
}