از 27 مارس 2025، توصیه می کنیم از android-latest-release به جای aosp-main برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
قابلیتها به فرآیندهای لینوکس اجازه میدهند تا اکثر امتیازات روتمانند را کنار بگذارند و در عین حال زیرمجموعهای از امتیازاتی را که برای انجام عملکرد خود نیاز دارند، حفظ کنند. پیادهسازی اولیه قابلیتها، پردازشهای 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
تستهای واحد بیونیک شامل تستهای واحد برای قابلیتهای محیطی است. فراتر از آن، استفاده از کلمه کلیدی "قابلیت ها" در اندروید init برای یک سرویس و سپس بررسی اینکه آیا سرویس قابلیت های مورد انتظار را دارد، امکان تست زمان اجرا این ویژگی را فراهم می کند.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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-29 بهوقت ساعت هماهنگ جهانی."],[],[],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."]]