تسمح الإمكانات لعمليات Linux بإلغاء معظم الأذونات المميزة المشابهة لأذونات الجذر مع الاحتفاظ بمجموعة فرعية من الأذونات المميزة التي تحتاج إليها لأداء وظيفتها. في الإصدار الأصلي من إمكانات Linux، كان من المستحيل أن ترث العمليات التي تم إنشاؤها باستخدام fork+exec إمكانات ما لم يتم ضبط إمكانات الملفات التي يتم تنفيذها. في المقابل، تشكّل إمكانات الملفات خطرًا أمنيًا، لأنّ أي عملية تنفّذ ملفًا يتضمّن إمكانات ملفات يمكنها اكتساب هذه الإمكانات.
تتيح الإمكانات المحيطة لخدمات النظام التي يتم تشغيلها بواسطة init إمكانية ضبط الإعدادات في ملفات .rc
، ما يتيح جمع الإعدادات في ملف واحد بدلاً من تقسيمها في ملف fs_config.c
. وهذا يعني أنّه بالنسبة إلى أي خدمة يتم تشغيلها بواسطة init، يمكنك استخدام ملف .rc
المرتبط بالخدمة لإعداد إمكانات هذه الخدمة.
تُعدّ الإمكانات المحيطة الآلية المفضّلة لضبط الإمكانات
للخدمات التي يتم تشغيلها بواسطة init (تحتفظ هذه الطريقة بجميع جوانب
إعدادات الخدمة في ملف .rc
واحد). ننصحك باستخدام إمكانات الخلفية بدلاً من ضبط إمكانات نظام الملفات باستخدام قسم caps في ملفات config.fs
.
عند ضبط إمكانات الخدمات التي لم يتم تشغيلها بواسطة init،
واصِل ضبط إمكانات نظام الملفات باستخدام
fs_config.c
.
تفعيل إمكانات "وضع الاستراحة"
لتفعيل الإمكانات المستندة إلى السياق لخدمة معيّنة، استخدِم الكلمة الرئيسية capabilities
في init. للحصول على تفاصيل حول لغة الإعداد الحالية، يُرجى الرجوع إلى ملف README.md الخاص بالإعداد.
على سبيل المثال، لتفعيل الإمكانات المحيطة لخدمة 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/
التصحيحات المطلوبة
تم نقل الإصلاحات المطلوبة إلى جميع فروع النواة الشائعة ذات الصلة في Android.
تم نقل تصحيح أخطاء إمكانات البيئة المحيطة الرئيسية https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585b9de0e8932b0fdb08 إلى الإصدارات السابقة في:
- android-3.18:
- android-4.1:
تمت إعادة إصدار إصلاح أمني صغير https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3 في:
- android-3.18:
- android-4.1:
التحقُّق
تتضمّن اختبارات الوحدات في Bionic اختبارات الوحدات الخاصة بالميزات المحيطة. بالإضافة إلى ذلك، يمكن اختبار هذه الميزة في وقت التشغيل من خلال استخدام الكلمة الرئيسية "capabilities" في Android init لإحدى الخدمات، ثم التحقّق من حصول الخدمة على الإمكانات المتوقّعة.