تُتيح الإمكانات لعمليات Linux التخلّص من معظم الامتيازات التي تشبه الجذر مع الاحتفاظ بمجموعة فرعية من الامتيازات التي يحتاجونها لأداء وظائفها. أدى التنفيذ الأصلي للإمكانات إلى استحالة تنفيذ fork+exec عمليات لاكتساب الإمكانات ما لم تكن الملفات التي يتم تنفيذها تحتوي على ملف والإمكانيات التي تمت تهيئتها. وتشكّل إمكانات الملفات بدورها خطرًا أمنيًا لأن أي عملية تنفّذ ملفًا باستخدام إمكانيات الملف يمكن أن تكتسب هذه الإمكانات.
تتيح الإمكانات المحيطية لخدمات النظام التي يتم تشغيلها من خلال init ضبط
إمكانات في ملفات .rc
، مما يؤدي إلى عرض الإعداد في
ملف واحد بدلاً من تقسيم التهيئة في
ملف fs_config.c
. وهذا يعني أنه بالنسبة لأي خدمة يتم إطلاقها بواسطة
يمكنك استخدام ملف .rc
المرتبط بالخدمة
تهيئة الإمكانيات الخاصة بتلك الخدمة.
"إمكانات الإضاءة السينمائية" هي الآلية المفضّلة لضبط الإمكانيات
للخدمات التي تم إطلاقها بواسطة init (تحتفظ هذه الطريقة بجميع جوانب الخدمة
الإعدادات في ملف .rc
واحد). ننصح باستخدام وضع "عرض شاشة الاستراحة"
إمكانات بدلاً من
ملف التهيئة
إمكانات النظام باستخدام قسم الأحرف الكبيرة في ملفات config.fs
.
عند إعداد إمكانيات لخدمات لم يتم إطلاقها من خلال الإعداد،
مواصلة تكوين إمكانات نظام الملفات باستخدام
fs_config.c
تفعيل إمكانيات الصوت المحيط
لتفعيل إمكانات البيئة المحيطة لخدمة معيّنة، استخدِم السمة
كلمة رئيسية واحدة (capabilities
) في البداية. للغة الإعداد الحالية
التفاصيل، فراجع
إعداد 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:
التحقُّق
البايونية تشمل اختبارات الوحدة اختبارات الوحدة للإمكانيات المحيطة. علاوة على ذلك، فإن استخدام "الإمكانات" كلمة رئيسية في Android init لإحدى الخدمات، ثم التحقق من حصول الخدمة على الإمكانات المتوقعة التي ستسمح باختبار وقت تشغيل هذه الميزة.