SELinux নীতি তৈরি করা

এই নিবন্ধটি SELinux নীতি কীভাবে তৈরি করা হয় তা কভার করে। SELinux নীতিটি মূল AOSP নীতি (প্ল্যাটফর্ম) এবং ডিভাইস-নির্দিষ্ট নীতি (বিক্রেতা) এর সমন্বয় থেকে তৈরি করা হয়েছে। Android 7.0 এর মাধ্যমে Android 4.4-এর জন্য SELinux পলিসি বিল্ড ফ্লো সমস্ত সেপলিসি ফ্র্যাগমেন্ট একত্রিত করে তারপর রুট ডিরেক্টরিতে মনোলিথিক ফাইল তৈরি করে। এর মানে হল যে SoC বিক্রেতারা এবং ODM নির্মাতারা boot.img (নন-A/B ডিভাইসের জন্য) বা system.img (A/B ডিভাইসের জন্য) প্রতিবার নীতি পরিবর্তন করেছে।

অ্যান্ড্রয়েড 8.0 এবং উচ্চতর, প্ল্যাটফর্ম এবং বিক্রেতা নীতি আলাদাভাবে তৈরি করা হয়েছে। SOCs এবং OEMগুলি তাদের নীতির অংশগুলি আপডেট করতে পারে, তাদের ছবিগুলি তৈরি করতে পারে (যেমন, vendor.img এবং boot.img ), তারপর সেই ছবিগুলিকে প্ল্যাটফর্ম আপডেটগুলি ছাড়াই আপডেট করতে পারে৷

যাইহোক, যেহেতু মডুলারাইজড SELinux পলিসি ফাইলগুলি /vendor পার্টিশনে সংরক্ষণ করা হয়, তাই init প্রক্রিয়াটি অবশ্যই সিস্টেম এবং ভেন্ডর পার্টিশনগুলিকে আগে মাউন্ট করতে হবে যাতে এটি সেই পার্টিশনগুলি থেকে SELinux ফাইলগুলি পড়তে পারে এবং সেগুলিকে সিস্টেম ডিরেক্টরিতে মূল SELinux ফাইলগুলির সাথে মার্জ করতে পারে (সেগুলি লোড করার আগে কার্নেল)।

সোর্স ফাইল

SELinux নির্মাণের যুক্তি এই ফাইলগুলিতে রয়েছে:

  • external/selinux : এক্সটার্নাল SELinux প্রোজেক্ট, SELinux পলিসি এবং লেবেল কম্পাইল করার জন্য HOST কমান্ড লাইন ইউটিলিটি তৈরি করতে ব্যবহৃত হয়।
    • external/selinux/libselinux : Android কিছু Android-নির্দিষ্ট কাস্টমাইজেশন সহ বাহ্যিক libselinux প্রকল্পের একটি উপসেট ব্যবহার করে। বিস্তারিত জানার জন্য, external/selinux/README.android দেখুন।
    • external/selinux/libsepol :
      • chkcon : একটি প্রদত্ত বাইনারি নীতির (হোস্ট এক্সিকিউটেবল) জন্য একটি নিরাপত্তা প্রসঙ্গ বৈধ কিনা তা নির্ধারণ করুন।
      • libsepol : SELinux লাইব্রেরি বাইনারি নিরাপত্তা নীতিগুলিকে কাজে লাগানোর জন্য (হোস্ট স্ট্যাটিক/শেয়ারড লাইব্রেরি, টার্গেট স্ট্যাটিক লাইব্রেরি)।
    • external/selinux/checkpolicy : SELinux পলিসি কম্পাইলার (হোস্ট এক্সিকিউটেবল: checkpolicy , checkmodule এবং dispol )। libsepol উপর নির্ভর করে।
  • system/sepolicy : মূল Android SELinux নীতি কনফিগারেশন, প্রসঙ্গ এবং নীতি ফাইল সহ। প্রধান সেপলিসি বিল্ড লজিক এখানেও রয়েছে ( system/sepolicy/Android.mk )।

system/sepolicy ইমপ্লিমেন্টিং SELinux- এ ফাইলগুলির উপর আরো বিস্তারিত জানার জন্য।

Android 7.0 এবং তার আগের

এই বিভাগে SELinux পলিসি কীভাবে Android 7.x এবং তার আগের সংস্করণে তৈরি করা হয়েছে তা কভার করে।

SELinux নীতি তৈরি করা

SELinux নীতিটি মূল AOSP নীতিকে ডিভাইস-নির্দিষ্ট কাস্টমাইজেশনের সাথে একত্রিত করে তৈরি করা হয়েছে। সম্মিলিত নীতি তারপর পলিসি কম্পাইলার এবং বিভিন্ন চেকারের কাছে পাঠানো হয়। ডিভাইস-নির্দিষ্ট কাস্টমাইজেশনটি ডিভাইস-নির্দিষ্ট Boardconfig.mk ফাইলে সংজ্ঞায়িত BOARD_SEPOLICY_DIRS ভেরিয়েবলের মাধ্যমে করা হয়। এই গ্লোবাল বিল্ড ভেরিয়েবলটিতে ডিরেক্টরিগুলির একটি তালিকা রয়েছে যা অতিরিক্ত নীতি ফাইলগুলির জন্য অনুসন্ধান করার ক্রম নির্দিষ্ট করে।

উদাহরণস্বরূপ, একটি SoC বিক্রেতা এবং একটি ODM প্রত্যেকে একটি ডিরেক্টরি যোগ করতে পারে, একটি SoC-নির্দিষ্ট সেটিংসের জন্য এবং আরেকটি ডিভাইস-নির্দিষ্ট সেটিংসের জন্য, একটি প্রদত্ত ডিভাইসের জন্য চূড়ান্ত SELinux কনফিগারেশন তৈরি করতে:

  • BOARD_SEPOLICY_DIRS += device/ SOC /common/sepolicy
  • BOARD_SEPOLICY_DIRS += device/ SoC / DEVICE /sepolicy

system/sepolicy এবং BOARD_SEPOLICY_DIRS এ ফাইল_প্রসঙ্গ ফাইলগুলির বিষয়বস্তু ডিভাইসে file_contexts.bin তৈরি করতে একত্রিত করা হয়েছে:

এই ছবিটি Android 7.x-এর জন্য SELinux বিল্ড লজিক দেখায়।
চিত্র 1 . SELinux বিল্ড লজিক

sepolicy ফাইল একাধিক উৎস ফাইল নিয়ে গঠিত:

  • প্লেইন টেক্সট policy.conf সেই ক্রমে security_classes , initial_sids , *.te ফাইল, genfs_contexts এবং port_contexts একত্রিত করে তৈরি করা হয়।
  • প্রতিটি ফাইলের জন্য (যেমন security_classes ), এর বিষয়বস্তু হল system/sepolicy/ এবং BOARDS_SEPOLICY_DIRS এর অধীনে একই নামের ফাইলগুলির সংমিশ্রণ।
  • সিনট্যাক্স পরীক্ষা করার জন্য policy.conf SELinux কম্পাইলারে পাঠানো হয় এবং ডিভাইসে sepolicy হিসাবে বাইনারি ফর্ম্যাটে কম্পাইল করা হয়।
    এই চিত্রটি সেই ফাইলগুলি দেখায় যা Android 7.x এর জন্য SELinux নীতি ফাইল তৈরি করে৷
    চিত্র ২ . SELinux নীতি ফাইল

SELinux ফাইল

কম্পাইল করার পরে, 7.x এবং তার আগের চলমান Android ডিভাইসগুলিতে সাধারণত নিম্নলিখিত SELinux-সম্পর্কিত ফাইলগুলি থাকে:

  • selinux_version
  • sepolicy: পলিসি ফাইলগুলিকে একত্রিত করার পরে বাইনারি আউটপুট (যেমন, security_classes , initial_sids , এবং *.te )
  • file_contexts
  • property_contexts
  • seapp_contexts
  • service_contexts
  • system/etc/mac_permissions.xml

আরো বিস্তারিত জানার জন্য, SELinux বাস্তবায়ন দেখুন।

SELinux আরম্ভ

সিস্টেম বুট আপ হলে, SELinux পারমিসিভ মোডে থাকে (এবং এনফোর্সিং মোডে নয়)। init প্রক্রিয়া নিম্নলিখিত কাজগুলি সম্পাদন করে:

  • ramdisk থেকে /sys/fs/selinux/load এর মাধ্যমে কার্নেলের মধ্যে sepolicy ফাইল লোড করা হয়।
  • এনফোর্সিং মোডে SELinux স্যুইচ করে।
  • SELinux ডোমেইন নিয়ম নিজের উপর প্রয়োগ করতে re-exec() চালায়।

বুট সময় সংক্ষিপ্ত করতে, যত তাড়াতাড়ি সম্ভব init প্রক্রিয়ায় re-exec() সম্পাদন করুন।

Android 8.0 এবং উচ্চতর

অ্যান্ড্রয়েড 8.0-এ, সামঞ্জস্য বজায় রেখে স্বাধীন প্ল্যাটফর্ম/বিক্রেতা নীতি আপডেট করার অনুমতি দেওয়ার জন্য SELinux নীতি প্ল্যাটফর্ম এবং বিক্রেতা উপাদানগুলিতে বিভক্ত।

প্ল্যাটফর্ম সেপলিসিকে আরও বিভক্ত করা হয়েছে প্ল্যাটফর্ম প্রাইভেট এবং প্ল্যাটফর্ম পাবলিক পার্টস-এ বিভক্ত করা হয়েছে নির্দিষ্ট ধরন এবং গুণাবলী বিক্রেতা নীতি লেখকদের কাছে রপ্তানি করার জন্য। প্ল্যাটফর্ম পাবলিক প্রকার/গুণাবলী একটি প্রদত্ত প্ল্যাটফর্ম সংস্করণের জন্য স্থিতিশীল API হিসাবে রক্ষণাবেক্ষণের গ্যারান্টিযুক্ত। প্ল্যাটফর্ম ম্যাপিং ফাইলগুলি ব্যবহার করে বিভিন্ন সংস্করণের জন্য পূর্ববর্তী প্ল্যাটফর্মের পাবলিক টাইপ/অ্যাট্রিবিউটগুলির সাথে সামঞ্জস্যতা নিশ্চিত করা যেতে পারে।

প্ল্যাটফর্ম পাবলিক সেপলিসি

প্ল্যাটফর্ম পাবলিক সেপলিসি system/sepolicy/public অধীনে সংজ্ঞায়িত সবকিছু অন্তর্ভুক্ত করে। প্ল্যাটফর্ম অনুমান করতে পারে যে ধরনের এবং গুণাবলী পাবলিক নীতির অধীনে সংজ্ঞায়িত একটি প্রদত্ত প্ল্যাটফর্ম সংস্করণের জন্য স্থিতিশীল API। এটি সেপলিসির একটি অংশ গঠন করে যা প্ল্যাটফর্ম দ্বারা রপ্তানি করা হয় যেখানে বিক্রেতা (যেমন ডিভাইস) নীতি বিকাশকারীরা অতিরিক্ত ডিভাইস-নির্দিষ্ট নীতি লিখতে পারে।

PLATFORM_SEPOLICY_VERSION বিল্ড ভেরিয়েবল দ্বারা সংজ্ঞায়িত নীতির যে সংস্করণের বিরুদ্ধে বিক্রেতা ফাইলগুলি লেখা হয় তার অনুসারে প্রকারগুলি সংস্করণ করা হয়৷ ভার্সনড পাবলিক পলিসি তারপর ভেন্ডর পলিসির সাথে এবং (এর আসল আকারে) প্লাটফর্ম পলিসিতে অন্তর্ভুক্ত করা হয়। এইভাবে, চূড়ান্ত নীতিতে প্রাইভেট প্ল্যাটফর্ম নীতি, বর্তমান প্ল্যাটফর্মের পাবলিক সেপলিসি, ডিভাইস-নির্দিষ্ট নীতি এবং প্ল্যাটফর্মের সংস্করণের সাথে সংশ্লিষ্ট সংস্করণযুক্ত পাবলিক নীতি অন্তর্ভুক্ত রয়েছে যার বিরুদ্ধে ডিভাইস নীতি লেখা হয়েছিল।

প্ল্যাটফর্ম ব্যক্তিগত সেপলিসি

প্ল্যাটফর্ম প্রাইভেট সেপলিসিতে /system/sepolicy/private এর অধীনে সংজ্ঞায়িত সবকিছু অন্তর্ভুক্ত করে। নীতির এই অংশটি শুধুমাত্র প্ল্যাটফর্মের প্রকার, অনুমতি এবং প্ল্যাটফর্ম কার্যকারিতার জন্য প্রয়োজনীয় বৈশিষ্ট্যগুলি গঠন করে। এগুলি vendor/device নীতি লেখকদের কাছে রপ্তানি করা হয় না। নন-প্ল্যাটফর্ম নীতি লেখকদের অবশ্যই প্ল্যাটফর্ম প্রাইভেট সিপলিসিতে সংজ্ঞায়িত প্রকার/গুণ/বিধির উপর ভিত্তি করে তাদের নীতির এক্সটেনশন লিখতে হবে না। তদুপরি, এই নিয়মগুলিকে সংশোধন করার অনুমতি দেওয়া হয়েছে বা শুধুমাত্র ফ্রেমওয়ার্ক আপডেটের অংশ হিসাবে অদৃশ্য হতে পারে৷

প্ল্যাটফর্ম ব্যক্তিগত ম্যাপিং

প্ল্যাটফর্ম প্রাইভেট ম্যাপিং-এর মধ্যে নীতি বিবৃতি রয়েছে যা প্ল্যাটফর্মের পাবলিক পলিসিতে পূর্ববর্তী প্ল্যাটফর্ম সংস্করণগুলির প্রকাশ করা বৈশিষ্ট্যগুলিকে বর্তমান প্ল্যাটফর্ম পাবলিক সেপলিসিতে ব্যবহৃত কংক্রিট প্রকারের সাথে ম্যাপ করে। এটি পূর্ববর্তী প্ল্যাটফর্ম পাবলিক সেপলিসি সংস্করণ(গুলি) থেকে প্ল্যাটফর্ম পাবলিক অ্যাট্রিবিউটের উপর ভিত্তি করে লিখিত বিক্রেতা নীতিটি কাজ চালিয়ে যাওয়া নিশ্চিত করে। সংস্করণটি একটি প্রদত্ত প্ল্যাটফর্ম সংস্করণের জন্য AOSP-এ PLATFORM_SEPOLICY_VERSION বিল্ড ভেরিয়েবল সেটের উপর ভিত্তি করে। প্রতিটি পূর্ববর্তী প্ল্যাটফর্ম সংস্করণের জন্য একটি পৃথক ম্যাপিং ফাইল বিদ্যমান যা থেকে এই প্ল্যাটফর্মটি বিক্রেতা নীতি গ্রহণ করবে বলে আশা করা হচ্ছে৷ আরো বিস্তারিত জানার জন্য, সামঞ্জস্যতা দেখুন।

Android 11 এবং উচ্চতর

system_ext এবং পণ্যের সেপলিসি

Android 11 এ, system_ext নীতি এবং পণ্য নীতি যোগ করা হয়েছে। প্ল্যাটফর্ম সেপলিসির মতো, system_ext নীতি এবং পণ্য নীতি পাবলিক নীতি এবং ব্যক্তিগত নীতিতে বিভক্ত।

পাবলিক নীতি বিক্রেতা রপ্তানি করা হয়. প্রকার এবং গুণাবলী স্থিতিশীল API হয়ে যায়, এবং বিক্রেতা নীতি পাবলিক নীতিতে প্রকার এবং গুণাবলী উল্লেখ করতে পারে। প্রকারগুলিকে PLATFORM_SEPOLICY_VERSION অনুযায়ী সংস্করণ করা হয় এবং সংস্করণের নীতি বিক্রেতা নীতিতে অন্তর্ভুক্ত করা হয়৷ মূল নীতি প্রতিটি system_ext এবং পণ্য পার্টিশনে অন্তর্ভুক্ত করা হয়েছে।

ব্যক্তিগত নীতিতে system_ext-শুধুমাত্র এবং পণ্য-শুধুমাত্র প্রকার, অনুমতি, এবং সিস্টেম_এক্সট এবং পণ্য পার্টিশনের কার্যকারিতার জন্য প্রয়োজনীয় বৈশিষ্ট্য রয়েছে। ব্যক্তিগত নীতি বিক্রেতার কাছে অদৃশ্য, এই নিয়মগুলি অভ্যন্তরীণ এবং সংশোধন করার অনুমতি দেয়।

system_ext এবং পণ্য ম্যাপিং

system_ext এবং পণ্যকে তাদের মনোনীত পাবলিক ধরনের বিক্রেতার কাছে রপ্তানির অনুমতি দেওয়া হয়। যাইহোক, সামঞ্জস্য বজায় রাখার দায়িত্ব প্রতিটি অংশীদারের নিজের। সামঞ্জস্যের জন্য, অংশীদাররা তাদের নিজস্ব ম্যাপিং ফাইলগুলি সরবরাহ করতে পারে যা বর্তমান পাবলিক সিপলিসিতে ব্যবহৃত কংক্রিট ধরণের পূর্ববর্তী সংস্করণগুলির সংস্করণযুক্ত বৈশিষ্ট্যগুলিকে ম্যাপ করে।

  • system_ext-এর জন্য একটি ম্যাপিং ফাইল ইনস্টল করতে, {SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS}/compat/{ver}/{ver}.cil এ পছন্দসই ম্যাপিং তথ্য ধারণকারী একটি cil ফাইল রাখুন এবং তারপর PRODUCT_PACKAGESsystem_ext_{ver}.cil যোগ করুন।
  • পণ্যের জন্য একটি ম্যাপিং ফাইল ইনস্টল করতে, পছন্দসই ম্যাপিং তথ্য সম্বলিত একটি cil ফাইল {PRODUCT_PRIVATE_SEPOLICY_DIRS}/compat/{ver}/{ver}.cil রাখুন এবং তারপর PRODUCT_PACKAGESproduct_{ver}.cil যোগ করুন।
  • একটি উদাহরণ পড়ুন যা রেডবুল ডিভাইসের পণ্য পার্টিশনের একটি ম্যাপিং ফাইল যোগ করে।

    SELinux নীতি তৈরি করা

    Android 8.0-এ SELinux পলিসি তৈরি করা হয়েছে /system এবং /vendor এর কাছ থেকে একত্রিত করে। এটি যথাযথভাবে সেট আপ করার জন্য যুক্তি হল /platform/system/sepolicy/Android.mk এ।

    নিম্নলিখিত অবস্থানে নীতি বিদ্যমান:

    অবস্থান ধারণ করে
    system/sepolicy/public প্ল্যাটফর্মের সেপলিসি API
    system/sepolicy/private প্ল্যাটফর্ম বাস্তবায়নের বিবরণ (বিক্রেতারা উপেক্ষা করতে পারেন)
    system/sepolicy/vendor নীতি এবং প্রসঙ্গ ফাইল যা বিক্রেতারা ব্যবহার করতে পারেন (ইচ্ছা হলে বিক্রেতারা উপেক্ষা করতে পারেন)
    BOARD_SEPOLICY_DIRS বিক্রেতা সেপলিসি
    BOARD_ODM_SEPOLICY_DIRS (Android 9 এবং উচ্চতর) ওডম সিপলিসি
    SYSTEM_EXT_PUBLIC_SEPOLICY_DIRS (Android 11 এবং উচ্চতর) System_ext এর sepolicy API
    SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS (Android 11 এবং উচ্চতর) System_ext বাস্তবায়নের বিবরণ (বিক্রেতারা উপেক্ষা করতে পারেন)
    PRODUCT_PUBLIC_SEPOLICY_DIRS (Android 11 এবং উচ্চতর) পণ্যের সেপলিসি API
    PRODUCT_PRIVATE_SEPOLICY_DIRS (Android 11 এবং উচ্চতর) পণ্য বাস্তবায়নের বিবরণ (বিক্রেতারা উপেক্ষা করতে পারেন)

    বিল্ড সিস্টেম এই নীতি গ্রহণ করে এবং সংশ্লিষ্ট পার্টিশনে সিস্টেম, system_ext, পণ্য, বিক্রেতা এবং odm নীতি উপাদান তৈরি করে। পদক্ষেপ অন্তর্ভুক্ত:

    1. নীতিগুলিকে SELinux কমন ইন্টারমিডিয়েট ল্যাঙ্গুয়েজ (CIL) বিন্যাসে রূপান্তর করা, বিশেষ করে:
      1. পাবলিক প্ল্যাটফর্ম নীতি (সিস্টেম + সিস্টেম_এক্সট + পণ্য)
      2. সম্মিলিত ব্যক্তিগত + পাবলিক নীতি
      3. সর্বজনীন + বিক্রেতা এবং BOARD_SEPOLICY_DIRS নীতি
    2. বিক্রেতা নীতির অংশ হিসাবে জনসাধারণের দ্বারা প্রদত্ত নীতির সংস্করণ করা। সম্মিলিত পাবলিক + ভেন্ডর + BOARD_SEPOLICY_DIRS নীতিকে অবহিত করার জন্য উত্পাদিত পাবলিক সিআইএল নীতি ব্যবহার করে সম্পন্ন করা হয়েছে কোন অংশগুলিকে এমন বৈশিষ্ট্যগুলিতে পরিণত করতে হবে যা প্ল্যাটফর্ম নীতির সাথে লিঙ্ক করা হবে৷
    3. প্ল্যাটফর্ম এবং বিক্রেতার অংশগুলিকে লিঙ্ক করে একটি ম্যাপিং ফাইল তৈরি করা। প্রাথমিকভাবে, এটি শুধুমাত্র পাবলিক পলিসি থেকে প্রকারগুলিকে ভেন্ডর পলিসিতে সংশ্লিষ্ট বৈশিষ্ট্যগুলির সাথে লিঙ্ক করে; পরবর্তীতে এটি ভবিষ্যতের প্ল্যাটফর্ম সংস্করণগুলিতে রক্ষণাবেক্ষণ করা ফাইলের ভিত্তিও প্রদান করবে, এই প্ল্যাটফর্ম সংস্করণকে লক্ষ্য করে বিক্রেতা নীতির সাথে সামঞ্জস্যতা সক্ষম করবে।
    4. পলিসি ফাইলগুলিকে একত্রিত করা (ডিভাইস এবং প্রি-কম্পাইল করা সমাধান উভয়ের বর্ণনা)।
      1. ম্যাপিং, প্ল্যাটফর্ম এবং বিক্রেতা নীতি একত্রিত করুন।
      2. আউটপুট বাইনারি নীতি ফাইল কম্পাইল.

    প্রি-কম্পাইল করা SELinux নীতি

    init SELinux চালু করার আগে, init পার্টিশন ( system , system_ext , product , vendor এবং odm ) থেকে সমস্ত CIL ফাইল সংগ্রহ করে এবং সেগুলিকে বাইনারি নীতিতে কম্পাইল করে, যে বিন্যাসে কার্নেলে লোড করা যেতে পারে। যেহেতু কম্পাইলেশনে সময় লাগে (সাধারণত 1-2 সেকেন্ড), CIL ফাইলগুলি বিল্ড টাইমে আগে থেকে কম্পাইল করা হয় এবং sha256 হ্যাশের সাথে /vendor/etc/selinux/precompiled_sepolicy বা /odm/etc/selinux/precompiled_sepolicy এ স্থাপন করা হয়। ইনপুট CIL ফাইলগুলির। রানটাইমে, init চেক করে যে কোনো পলিসি ফাইল হ্যাশের তুলনা করে আপডেট করা হয়েছে কিনা। যদি কিছুই পরিবর্তিত না হয়, init প্রি-কম্পাইল করা নীতি লোড করে। যদি না হয়, তাহলে init ফ্লাইতে কম্পাইল করে এবং প্রি-কম্পাইলডের পরিবর্তে এটি ব্যবহার করে।

    আরও নির্দিষ্টভাবে, পূর্বনির্ধারিত নীতি ব্যবহার করা হয় যদি নিম্নলিখিত সমস্ত শর্ত পূরণ করা হয়। এখানে, {partition} সেই পার্টিশনের প্রতিনিধিত্ব করে যেখানে প্রি-কম্পাইল করা নীতি বিদ্যমান: হয় vendor বা odm

    • /system/etc/selinux/plat_sepolicy_and_mapping.sha256 এবং /{partition}/etc/selinux/precompiled_sepolicy.plat_sepolicy_and_mapping.sha256 উভয়ই বিদ্যমান এবং অভিন্ন।
    • /system_ext/etc/selinux/system_ext_sepolicy_and_mapping.sha256 এবং /{partition}/etc/selinux/precompiled_sepolicy.system_ext_sepolicy_and_mapping.sha256 উভয়ই বিদ্যমান নেই। অথবা উভয়ই বিদ্যমান এবং অভিন্ন।
    • /product/etc/selinux/product_sepolicy_and_mapping.sha256 এবং /{partition}/etc/selinux/precompiled_sepolicy.product_sepolicy_and_mapping.sha256 উভয়ই বিদ্যমান নেই। অথবা উভয়ই বিদ্যমান এবং অভিন্ন।

    যদি তাদের মধ্যে কোনো পার্থক্য থাকে, তাহলে init ডিভাইসের সংকলন পাথে ফিরে আসে। আরো বিস্তারিত জানার জন্য system/core/init/selinux.cpp দেখুন।