क्षमताएं, Linux प्रोसेस को ज़्यादातर रूट-जैसे अधिकारों को छोड़ने देती हैं उन खास अधिकारों के सबसेट को बनाए रखना जिनकी ज़रूरत उन्हें अपने फ़ंक्शन के लिए होती है. क्षमताओं के मूल रूप से लागू होने की वजह से, फ़ोर्क और एक्ज़ीक्यूट नहीं किया जा सकता जब तक एक्ज़ीक्यूट की जा रही फ़ाइलों में फ़ाइल न हो, तब तक अनुमतियों को इनहेरिट करने की कॉन्फ़िगर की गई क्षमताएं. फ़ाइल की सुविधाओं की वजह से सुरक्षा जोखिम हो सकता है क्योंकि फ़ाइल की क्षमताओं वाली फ़ाइल को एक्ज़ीक्यूट करने वाली प्रोसेस उन क्षमताओं को पूरा करने में मदद मिलती है.
ऐंबियंट की सुविधाएं, init से लॉन्च की गई सिस्टम सेवाओं को कॉन्फ़िगर करने की अनुमति देती हैं
अपनी .rc
फ़ाइलों में सुविधाएं देता है, जिससे कॉन्फ़िगरेशन
कॉन्फ़िगरेशन को विभाजित करने के बजाय एक ही फ़ाइल
fs_config.c
फ़ाइल. इसका मतलब है कि अगर कोई सेवा शुरू की गई है,
में, आप सेवा से जुड़ी .rc
फ़ाइल का इस्तेमाल इन कामों के लिए कर सकते हैं
उस सेवा की क्षमताएं कॉन्फ़िगर करना.
सुविधाओं को सेट करने के लिए, ऐंबियंट मोड की क्षमताओं को प्राथमिकता दी जाती है
init से लॉन्च की गई सेवाओं के लिए (यह तरीका, सेवा के सभी पहलुओं को रखता है
कॉन्फ़िगरेशन) को लागू करने के लिए किया जाता है..rc
हमारा सुझाव है कि आप ऐंबियंट मोड इस्तेमाल करें
के बजाय क्षमताओं
फ़ाइल कॉन्फ़िगर की जा रही है
config.fs
फ़ाइलों में कैप सेक्शन का इस्तेमाल करके सिस्टम की क्षमताओं का इस्तेमाल किया जाता है.
init से लॉन्च नहीं की गई सेवाओं के लिए सुविधाएं सेट करते समय,
इसका इस्तेमाल करके फ़ाइल सिस्टम की क्षमताओं को कॉन्फ़िगर करना जारी रखें
fs_config.c
.
ऐंबियंट मोड की सुविधाएं चालू करें
किसी दी गई सेवा के लिए, ऐंबियंट मोड की सुविधाएं चालू करने के लिए,
इनिट में capabilities
कीवर्ड है. मौजूदा 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/ है
ज़रूरी पैच
ज़रूरी पैच, 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:
पुष्टि करें
बायोनिक यूनिट टेस्ट में, ऐंबियंट क्षमताओं के लिए यूनिट टेस्ट शामिल होते हैं. इसके अलावा, "क्षमताएं" में एक कीवर्ड शामिल किया है और फिर उसकी जाँच की है सेवा को अपेक्षित क्षमताएं मिलती हैं, जिससे रनटाइम के दौरान की जांच की जा सकेगी. यह सुविधा.