القدرات المحيطة

تسمح الإمكانيات لعمليات Linux بإسقاط معظم الامتيازات المشابهة للجذر مع الاحتفاظ بمجموعة فرعية من الامتيازات التي تتطلبها لأداء وظيفتها. جعل التنفيذ الأصلي للقدرات من المستحيل على عمليات fork + exec'd أن ترث القدرات ما لم تكن الملفات التي يتم تنفيذها تحتوي على إمكانيات ملف مهيأة. وتشكل قدرات الملفات بدورها خطرًا أمنيًا نظرًا لأن أي عملية تنفذ ملفًا بقدرات ملف ستكون قادرة على اكتساب هذه القدرات.

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

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

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

تمكين القدرات المحيطة

لتمكين قدرات المحيطة لخدمة معينة، استخدم capabilities الكلمة الرئيسية في الحرف الأول. للحصول على تفاصيل لغة init الحالية ، ارجع إلى 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/

البقع المطلوبة

تم نقل التصحيحات المطلوبة إلى جميع فروع 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 إلى backported في:

تصديق

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