প্রিভিলেজড অ্যাপ হল সিস্টেম অ্যাপ যা সিস্টেম ইমেজ পার্টিশনগুলির একটিতে একটি priv-app
ডিরেক্টরিতে অবস্থিত। অ্যান্ড্রয়েড রিলিজের জন্য ব্যবহৃত পার্টিশনগুলি হল
- অ্যান্ড্রয়েড 8.1 এবং নিম্নতর -
/system
- Android 9 এবং উচ্চতর -
/system, /product, /vendor
এই পৃষ্ঠা জুড়ে, /etc/permissions/priv-app
partition /etc/permissions/priv-app
।
ঐতিহাসিকভাবে, ডিভাইস প্রস্তুতকারকদের কোন স্বাক্ষরের উপর খুব কম নিয়ন্ত্রণ ছিল| বিশেষাধিকারপ্রাপ্ত অ্যাপগুলিকে বিশেষ অনুমতি দেওয়া যেতে পারে৷ অ্যান্ড্রয়েড 8.0 থেকে শুরু করে, নির্মাতাদের অবশ্যই /etc/permissions
ডিরেক্টরিতে সিস্টেম কনফিগারেশন XML ফাইলগুলিতে বিশেষ সুবিধাপ্রাপ্ত অনুমতি দিতে হবে। অ্যান্ড্রয়েড 9 অনুযায়ী, বাস্তবায়নকারীদের অবশ্যই স্পষ্টভাবে সমস্ত সুবিধাপ্রাপ্ত অনুমতি প্রদান বা অস্বীকার করতে হবে বা ডিভাইসটি বুট হবে না।
privapp-permissions.xml
ফাইলটি শুধুমাত্র একই পার্টিশনে বিশেষ সুবিধাপ্রাপ্ত অ্যাপের জন্য অনুমতি দিতে বা অস্বীকার করতে পারে। উদাহরণস্বরূপ, যদি /product
পার্টিশনের একটি অ্যাপ বিশেষাধিকারপ্রাপ্ত অনুমতির জন্য অনুরোধ করে, তাহলে অনুরোধটি শুধুমাত্র একটি privapp-permissions.xml
ফাইল দ্বারা মঞ্জুর বা অস্বীকার করা যেতে পারে যেটি /product
এও রয়েছে।
অনুমোদিত তালিকা যোগ করা হচ্ছে
অ্যাপ্লিকেশানগুলির জন্য অনুমতি তালিকাগুলি একটি একক XML বা frameworks/base/etc/permissions
নির্দেশিকাতে অবস্থিত একাধিক XML ফাইলে তালিকাভুক্ত করা যেতে পারে:
-
/etc/permissions/privapp-permissions- OEM_NAME .xml
-
/etc/permissions/privapp-permissions- DEVICE_NAME .xml
বিষয়বস্তু সংগঠিত করার জন্য কোন কঠোর নিয়ম নেই। যতক্ষণ না /system/priv-app
এর সমস্ত অ্যাপ অনুমোদিত তালিকায় থাকে ততক্ষণ পর্যন্ত ডিভাইস বাস্তবায়নকারীরা সামগ্রীর কাঠামো নির্ধারণ করতে পারে। যেমন, Google-এর দ্বারা ডেভেলপ করা সমস্ত বিশেষ সুবিধাপ্রাপ্ত অ্যাপের জন্য Google-এর একটি একক অনুমতি তালিকা রয়েছে এবং নিম্নলিখিত সংস্থাকে সুপারিশ করে:
- ইতিমধ্যেই অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট (AOSP) ট্রিতে অন্তর্ভুক্ত অ্যাপগুলির অনুমতি
/etc/permissions/privapp-permissions-platform.xml
এ তালিকাভুক্ত করা হয়েছে। - Google অ্যাপের অনুমতি
/etc/permissions/privapp-permissions-google.xml
এ তালিকাভুক্ত করা হয়েছে। - অন্যান্য অ্যাপের জন্য, ফর্মের ফাইলগুলি ব্যবহার করুন:
/etc/permissions/privapp-permissions- DEVICE_NAME .xml
।
অনুমোদিত তালিকা কাস্টমাইজ করা
AOSP-এ একটি অনুমোদিত তালিকা বাস্তবায়ন অন্তর্ভুক্ত যা প্রয়োজন অনুযায়ী কাস্টমাইজ করা যেতে পারে। AOSP-এ অন্তর্ভুক্ত অ্যাপগুলির অনুমতিগুলি ইতিমধ্যেই /etc/permissions/privapp-permissions-platform.xml
এ অনুমোদিত তালিকাভুক্ত।
যদি এমন অনুমতি থাকে যা অস্বীকার করা উচিত, তবে "অনুমতি" ট্যাগের পরিবর্তে "অনুমতি অস্বীকার" ট্যাগ ব্যবহার করতে 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
উপযুক্ত অনুমতি তালিকায় অনুপস্থিত অনুমতিগুলি যোগ করে সমস্ত লঙ্ঘনের সমাধান করতে হবে।
- অ্যান্ড্রয়েড 8.0 এবং তার নিচের সংস্করণে, প্রভাবিত অ্যাপগুলিকে অনুপস্থিত অনুমতি দেওয়া হয় না যদিও তারা
priv-app
পাথে থাকে। - অ্যান্ড্রয়েড 9 এবং উচ্চতর সংস্করণে, লঙ্ঘন ( সুবিধাপ্রাপ্ত অনুমতিগুলির) মানে ডিভাইসটি বুট হয় না ৷ আপনাকে অবশ্যই সুস্পষ্টভাবে সমস্ত বিশেষাধিকারপ্রাপ্ত অনুমতিগুলিকে অনুমতি দিতে হবে বা অস্বীকার করতে হবে৷
মঞ্জুরি তালিকা কার্যকর করা
অনুমোদনের তালিকা তৈরি হওয়ার পরে, বিল্ড প্রপার্টি ro.control_privapp_permissions=enforce
সেট করে রানটাইম এনফোর্সমেন্ট সক্ষম করুন।