প্রিভিলেজড পারমিশন অ্যালোলিস্ট

প্রিভিলেজড অ্যাপ হল সিস্টেম ইমেজ পার্টিশনে একটি priv-app ডিরেক্টরিতে অবস্থিত সিস্টেম অ্যাপ। অ্যান্ড্রয়েড রিলিজের জন্য ব্যবহৃত পার্টিশনগুলি হল:

  • Android 9 এবং উচ্চতর: /system, /product, /vendor
  • অ্যান্ড্রয়েড 8.1 এবং নিম্নতর: /system

ঐতিহাসিকভাবে, ডিভাইস নির্মাতাদের কোন স্বাক্ষরের উপর খুব কম নিয়ন্ত্রণ ছিল | বিশেষাধিকারপ্রাপ্ত অ্যাপগুলিকে বিশেষাধিকারপ্রাপ্ত অনুমতি দেওয়া যেতে পারে। অ্যান্ড্রয়েড 8.0 থেকে শুরু করে, নির্মাতারা স্পষ্টভাবে /etc/permissions ডিরেক্টরিতে সিস্টেম কনফিগারেশন XML ফাইলগুলিতে বিশেষাধিকারপ্রাপ্ত অনুমতি দিতে পারে। অ্যান্ড্রয়েড 9 অনুসারে, বাস্তবায়নকারীরা স্পষ্টভাবে সমস্ত বিশেষাধিকারপ্রাপ্ত অনুমতি প্রদান বা অস্বীকার করতে পারে। যদি বিশেষাধিকারপ্রাপ্ত অনুমতি না দেওয়া হয়, তাহলে ডিভাইসটি বুট হবে না।

privapp-permissions.xml ফাইলটি শুধুমাত্র একই পার্টিশনে বিশেষ সুবিধাপ্রাপ্ত অ্যাপের জন্য অনুমতি দিতে বা অস্বীকার করতে পারে। উদাহরণস্বরূপ, যদি /product পার্টিশনে একটি অ্যাপ বিশেষাধিকারপ্রাপ্ত অনুমতির অনুরোধ করে, তাহলে অনুরোধটি শুধুমাত্র /product এ একটি privapp-permissions.xml ফাইল দ্বারা মঞ্জুর বা অস্বীকার করা যেতে পারে।

একটি অনুমোদিত তালিকা যোগ করুন

অ্যাপ্লিকেশানগুলির জন্য অনুমতির অনুমতি তালিকাগুলি একটি একক XML ফাইলে বা frameworks/base/etc/permissions ডিরেক্টরিতে অবস্থিত একাধিক XML ফাইলগুলিতে তালিকাভুক্ত করা যেতে পারে:

  • /etc/permissions/privapp-permissions- OEM_NAME .xml
  • /etc/permissions/privapp-permissions- DEVICE_NAME .xml

কন্টেন্ট কিভাবে সংগঠিত হয় তার জন্য কোন কঠোর নিয়ম প্রযোজ্য নয়। যতক্ষণ না /system/priv-app এর সমস্ত অ্যাপ অনুমোদিত তালিকায় থাকে ততক্ষণ পর্যন্ত ডিভাইস বাস্তবায়নকারীরা সামগ্রীর কাঠামো নির্ধারণ করতে পারে। উদাহরণস্বরূপ, Google সমস্ত বিশেষ সুবিধাপ্রাপ্ত অ্যাপের জন্য একটি একক অনুমতি তালিকা তৈরি করেছে। আমরা নিম্নলিখিত সংস্থার সুপারিশ করি:

  • ইতিমধ্যেই অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট (AOSP) ট্রিতে অন্তর্ভুক্ত অ্যাপগুলির অনুমতি /etc/permissions/privapp-permissions-platform.xml এ তালিকাভুক্ত করা হয়েছে।
  • অন্যান্য অ্যাপের জন্য, ফর্মের ফাইলগুলি ব্যবহার করুন, /etc/permissions/privapp-permissions- DEVICE_NAME .xml

একটি অনুমোদিত তালিকা কাস্টমাইজ করুন

AOSP-এ একটি অনুমোদিত তালিকা বাস্তবায়ন অন্তর্ভুক্ত যা প্রয়োজন অনুযায়ী কাস্টমাইজ করা যেতে পারে।

যদি একটি অনুমতি অস্বীকার করা আবশ্যক, একটি permission ট্যাগের পরিবর্তে একটি deny-permission ট্যাগ ব্যবহার করতে XML সম্পাদনা করুন৷ উদাহরণ স্বরূপ:

<!-- This XML file declares which signature|privileged permissions to grant to
privileged apps that come with the platform -->

    <permissions>
      <privapp-permissions package="com.android.backupconfirm">
        <permission name="android.permission.BACKUP"/>
        <permission name="android.permission.CRYPT_KEEPER"/>
      </privapp-permissions>

      <privapp-permissions package="com.android.cellbroadcastreceiver">

        <!-- Don't allow the application to interact across users -->

        <deny-permission name="android.permission.INTERACT_ACROSS_USERS"/>
        <permission name="android.permission.MANAGE_USERS"/>
        <permission name="android.permission.MODIFY_PHONE_STATE"/>
        <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
        <permission name="android.permission.RECEIVE_EMERGENCY_BROADCAST"/>
      </privapp-permissions>
    ...

অনুপস্থিত অনুমতি খুঁজুন

একটি নতুন ডিভাইস শুরু করার সময় অনুপস্থিত অনুমতি খুঁজে পেতে, ট্রানজিশনাল লগ মোড সক্ষম করুন:

ro.control_privapp_permissions=log

লঙ্ঘন লগ ফাইলে রিপোর্ট করা হয়. অ-সুবিধাপ্রাপ্ত অনুমতি দেওয়া হয়. এটি করা নিশ্চিত করে যে ডিভাইসটি একটি কার্যকরী অবস্থায় থাকে এবং এখনও লঙ্ঘনের তালিকা প্রদান করে। ত্রুটি বার্তা বিন্যাস নিম্নরূপ:

PackageManager: Privileged permission {PERMISSION_NAME} for package {PACKAGE_NAME} - not in privapp-permissions allowlist

উপযুক্ত অনুমতি তালিকায় অনুপস্থিত অনুমতিগুলি যোগ করে সমস্ত লঙ্ঘনের সমাধান করতে হবে। উল্লেখ্য যে এতে:

  • Android 9 এবং উচ্চতর, সুবিধাপ্রাপ্ত অনুমতি লঙ্ঘন ডিভাইসটিকে শুরু হতে বাধা দেয়। পরিবর্তে, আপনাকে অবশ্যই সমস্ত বিশেষাধিকারপ্রাপ্ত অনুমতিগুলিকে স্পষ্টভাবে অনুমতি দিতে হবে বা অস্বীকার করতে হবে৷
  • অ্যানড্রয়েড 8.0 এবং তার চেয়ে কম, অনুপস্থিত অনুমতিগুলি priv-app পথে থাকা সত্ত্বেও প্রভাবিত অ্যাপগুলিকে দেওয়া হয় না।

একটি অনুমোদিত তালিকা প্রয়োগ করুন

আপনি আপনার অনুমোদিত তালিকা তৈরি করার পরে, বিল্ড প্রপার্টি ro.control_privapp_permissions=enforce সেট করে রানটাইম এনফোর্সমেন্ট সক্ষম করুন।

package="android" সহ অ্যাপ্লিকেশানগুলির দ্বারা ঘোষিত অনুমতিগুলির জন্যই অনুমতির তালিকা প্রয়োজন৷ ro.control_privapp_permissions প্রপার্টি স্টেটকে অবশ্যই কম্প্যাটিবিলিটি ডেফিনিশন ডকুমেন্টে (CDD) সেকশন 9.1 অনুমতি মেনে চলতে হবে।