إمكانات وضع "الإضاءة السينمائية"

تسمح الإمكانات لعمليات Linux بإلغاء معظم الامتيازات المشابهة لصلاحيات المستخدم الجذر مع الحفاظ على المجموعة الفرعية من الامتيازات التي تتطلّب تنفيذ وظائفها. جعل التنفيذ الأصلي للإمكانات من المستحيل أن تكتسب العمليات التي تم إنشاؤها من خلال fork+exec الإمكانات ما لم تكن الملفات التي يتم تنفيذها قد تم ضبط إمكانات الملفات لها. تشكّل إمكانات الملفات بدورها خطرًا على الأمان، لأنّ أي عملية تنفِّذ ملفًا يتضمّن إمكانات الملفات يمكنها اكتساب هذه الإمكانات.

تسمح الإمكانات الشاملة لخدمات النظام التي يبدأها init بضبط الإمكانات في ملفات .rc، ما يؤدي إلى تجميع الإعدادات فيملف واحد بدلاً من تقسيم الإعدادات فيملف fs_config.c. ويعني ذلك أنّه بالنسبة إلى أي خدمة يتم تشغيلها باستخدام .rc، يمكنك استخدام ملف .rc المرتبط بالخدمة لضبط إمكانات هذه الخدمة.

إنّ الإمكانات الشاملة هي الآلية المفضّلة لضبط الإمكانات للخدمات التي يتم تشغيلها بواسطة init (تحافظ هذه الطريقة على جميع جوانب إعدادات الخدمة في ملف .rc واحد). ننصحك باستخدام إمكانات ambient بدلاً من ضبط إمكانات نظام الملفات باستخدام قسم caps في ملفات config.fs.

عند ضبط الإمكانات للخدمات التي لا يتم تشغيلها بواسطة init، يمكنك مواصلة ضبط إمكانات نظام الملفات باستخدام fs_config.c.

تفعيل ميزات الإضاءة السينمائية

لتفعيل إمكانات الإضاءة السينمائية لخدمة معيّنة، استخدِم العبارة capabilities في init. للاطّلاع على تفاصيل لغة init الحالية، يُرجى الرجوع إلى ملف README.md الخاص بـ init.

على سبيل المثال، لتفعيل ميزات الإضاءة السينمائية لخدمة AOSP wificond، يُنشئ ملف ‎.rc للخدمة wificond المستخدمين والمجموعات المناسبة ويمنح الخدمة الميزات المحدّدة باستخدام العبارة الرئيسية capabilities:

service wificond /system/bin/wificond
    class main
    user wifi
    group wifi net_raw net_admin
    capabilities NET_RAW NET_ADMIN

التنفيذ المرجعي

التنفيذ المرجعي هو نواة Android الشائعة https://android.googlesource.com/kernel/common/

التصحيحات المطلوبة

تم نقل الرقع المطلوبة إلى جميع فروع ملفّ kernel المشترَك في Android ذات الصلة.

تم نقل تصحيح القدرات المحيطة الرئيسي https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585b9de0e8932b0fdb08 إلى الإصدارات السابقة في:

تم نقل تصحيح أمان صغير https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3 إلى الإصدارات السابقة من:

التحقُّق

تشمل اختبارات وحدات Bionic اختبارات وحدات للميزات المحيطة. بالإضافة إلى ذلك، يتيح استخدام الكلمة الرئيسية "الإمكانات" في عملية إعداد Android لخدمة معيّنة، ثم التحقّق من أنّه تحصل الخدمة على الإمكانات المتوقّعة، اختبار هذه الميزة أثناء التشغيل.