قابلیت های محیط

این قابلیت ها به فرایندهای لینوکس اجازه می دهد تا با حفظ زیرمجموعه امتیازاتی که برای انجام عملکرد خود به آن نیاز دارند ، اکثر امتیازات ریشه مانند را حذف کنند. اجرای اصلی قابلیت ها ، امکان وارث قابلیت ها را برای پردازش های fork + exec'd غیرممکن می کرد ، مگر اینکه پرونده های اجرا شده دارای قابلیت فایل باشند. قابلیت های پرونده ، به نوبه خود ، یک خطر امنیتی به وجود می آورد ، زیرا هر فرآیند اجرای یک فایل با قابلیت فایل قادر به دستیابی به آن توانایی ها خواهد بود.

قابلیت های محیطی امکان پیکربندی قابلیت های موجود در پرونده های .rc را برای سرویس های سیستمی که توسط init راه اندازی شده اند فراهم می کند و پیکربندی را به جای تقسیم بندی پیکربندی در پرونده fs_config.c ، در یک فایل واحد قرار می دهد. این بدان معنی است که برای هر سرویسی که توسط init راه اندازی شده است ، می توانید از فایل .rc مرتبط با سرویس برای پیکربندی قابلیت های آن سرویس استفاده کنید.

قابلیت های محیط مکانیسم ارجح برای تنظیم قابلیت ها برای سرویس های راه اندازی شده توسط init است (این روش تمام جوانب مربوط به پیکربندی سرویس را در یک پرونده .rc واحد نگه می دارد). ما توصیه می کنیم به جای پیکربندی قابلیت سیستم فایل با استفاده از قسمت caps در config.fs های config.fs از قابلیت های محیط استفاده کنید.

هنگام تنظیم قابلیت ها برای سرویس هایی که توسط init راه اندازی نشده اند ، با استفاده از fs_config.c به پیکربندی قابلیت های سیستم فایل ادامه fs_config.c .

فعال کردن قابلیت های محیط

برای فعال کردن قابلیت های محیط برای یک سرویس داده شده ، از کلیدواژه capabilities در init استفاده کنید. برای جزئیات فعلی زبان init ، به init README.md مراجعه کنید .

به عنوان مثال ، برای فعال کردن قابلیت های محیط برای سرویس AOSP wificond ، پرونده wificond برای سرویس wificond کاربر و گروه های مناسب را تنظیم می کند و با استفاده از کلمه کلیدی capabilities ، 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 به صورت زیر ارسال شده است:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/؟id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3 یک رفع امنیت کوچک به صورت زیر ارسال شده است:

اعتبار سنجی

آزمون های واحد بایونیک شامل تست های واحد برای قابلیت های محیط هستند. فراتر از آن ، استفاده از کلمه کلیدی "قابلیت ها" در Android init برای یک سرویس ، و سپس بررسی اینکه این سرویس از قابلیت های مورد انتظار برخوردار است ، امکان آزمایش زمان اجرای این ویژگی را فراهم می کند.