اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release بدلاً من aosp-main لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تسمح الإمكانات لعمليات Linux بإلغاء معظم الأذونات المشابهة لصلاحيات المستخدم الجذر مع
الحفاظ على المجموعة الفرعية من الأذونات التي تتطلّب تنفيذ وظيفتها.
جعل التنفيذ الأصلي للإمكانات من المستحيل أن تكتسب العمليات التي تم إنشاؤها من خلال fork+exec
الإمكانات ما لم تكن الملفات التي يتم تنفيذها قد تم ضبط إمكانات
الملفات لها. تشكّل إمكانات الملفات بدورها خطرًا على الأمان،
لأنّ أي عملية تنفِّذ ملفًا يتضمّن إمكانات الملفات يمكنها اكتساب
هذه الإمكانات.
تسمح الإمكانات الشاملة لخدمات النظام التي يبدأها init بضبط
الإمكانات في ملفات .rc، ما يؤدي إلى تجميع الإعدادات فيملف واحد بدلاً من تقسيم الإعدادات فيملف
fs_config.c. ويعني ذلك أنّه بالنسبة إلى أي خدمة يتم تشغيلها باستخدام .rc، يمكنك استخدام ملف .rc المرتبط بالخدمة لضبط إمكانات هذه الخدمة.
إنّ الإمكانات الشاملة هي الآلية المفضّلة لضبط الإمكانات
للخدمات التي يتم تشغيلها بواسطة init (تحافظ هذه الطريقة على جميع جوانب إعدادات
الخدمة في ملف .rc واحد). ننصحك باستخدام إمكانات ambient
بدلاً من
ضبط إمكانات نظام
الملفات باستخدام قسم 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
تشمل اختبارات وحدات Bionic اختبارات وحدات للميزات المحيطة. بالإضافة إلى ذلك، باستخدام
الكلمة الرئيسية "capabilities" في عملية إعداد Android لخدمة معيّنة، ثم التحقّق من أنّه
تحصل الخدمة على الإمكانات المتوقّعة، سيتيح ذلك اختبار أثناء التشغيل لميزة
هذه.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Ambient capabilities\n\nCapabilities allow Linux processes to drop most root-like privileges while\nretaining the subset of privileges that they require to perform their function.\nThe original implementation of capabilities made it impossible for fork+exec'd\nprocesses to inherit capabilities unless the files being executed had file\ncapabilities configured. File capabilities, in turn, present a security risk\nsince any process executing a file with file capabilities can gain\nthose capabilities.\n\n\nAmbient capabilities allow system services launched by init to configure\ncapabilities in their `.rc` files, bringing configuration into\na single file instead of splitting configuration in the\n`fs_config.c` file. This means that for any service launched by\ninit, you can use the `.rc` file associated with the service to\nconfigure capabilities for that service.\n\n\nAmbient capabilities are the preferred mechanism for setting capabilities\nfor services launched by init (this method keeps all aspects for the service\nconfiguration in a single `.rc` file). We recommend using ambient\ncapabilities instead of\n[configuring file\nsystem capabilities using the caps section](/docs/core/permissions/filesystem#configuring-the-caps-section) in `config.fs` files.\n\n\nWhen setting capabilities for services **not launched by init** ,\ncontinue to configure file system capabilities using\n`fs_config.c`.\n\nEnable ambient capabilities\n---------------------------\n\n\nTo enable ambient capabilities for a given service, use the\n`capabilities` keyword in init. For current init language\ndetails, refer to the\n[init README.md](https://android.googlesource.com/platform/system/core/+/android16-release/init/README.md).\n\n\nFor example, to enable ambient capabilities for the AOSP service\n`wificond`, the\n[.rc file](https://android.googlesource.com/platform/system/connectivity/wificond/+/android16-release/wificond.rc)\nfor the `wificond` service sets up the appropriate\nuser and groups and gives the service the specified capabilities using the\n`capabilities` keyword: \n\n```scdoc\nservice wificond /system/bin/wificond\n class main\n user wifi\n group wifi net_raw net_admin\n capabilities NET_RAW NET_ADMIN\n```\n\nReference implementation\n------------------------\n\n\nThe reference implementation is the Android common kernel \u003chttps://android.googlesource.com/kernel/common/\u003e\n\nRequired patches\n----------------\n\n| **Note:** The Android kernels 3.10 (android-3.10) and 3.14 (android-3.14) have been deprecated and removed.\n\n\nRequired patches have been backported to all the relevant Android common kernel\nbranches.\n\n\nThe main ambient capabilities patch \u003chttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585b9de0e8932b0fdb08\u003e\nhas been backported in:\n\n- android-3.18:\n - \u003chttps://android.googlesource.com/kernel/common/+/d6a9a74487e86b528c44965f871de75671b6adb0\u003e\n- android-4.1:\n - \u003chttps://android.googlesource.com/kernel/common/+/0381789d78d552462ef576d9759e9aa6fcaae3bb\u003e\n\n\nA small security fix \u003chttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3\u003e\nhas been backported in:\n\n- android-3.18:\n - \u003chttps://android.googlesource.com/kernel/common/+/7bc0ef844a537ebb786ba0574932bd65751818c6\u003e\n- android-4.1:\n - \u003chttps://android.googlesource.com/kernel/common/+/dda568cc40d855bde2dfa9c04a7a1628c80b7f63\u003e\n\nValidation\n----------\n\n\n[Bionic\nunit tests](https://android.googlesource.com/platform/bionic/+/main#Running-the-tests) include unit tests for ambient capabilities. Beyond that, using\nthe \"capabilities\" keyword in Android init for a service, and then checking that\nthe service gets the expected capabilities would allow for runtime testing of\nthis feature."]]