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

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

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

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

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

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

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

تصديق

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