প্রিভিলেজড অ্যাপ হল সিস্টেম ইমেজ পার্টিশনে একটি 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 পারমিশন মেনে চলতে হবে।