परिवेश की क्षमताएं

क्षमताएं लिनक्स प्रक्रियाओं को उन विशेषाधिकारों को छोड़ने की अनुमति देती हैं, जो विशेषाधिकारों के सबसेट को बनाए रखते हैं, जिन्हें उन्हें अपना कार्य करने की आवश्यकता होती है। क्षमताओं के मूल कार्यान्वयन ने फोर्क + की प्रक्रियाओं के लिए असंभव बना दिया जब तक कि फाइलों को निष्पादित की जाने वाली फ़ाइलों को कॉन्फ़िगर करने की क्षमता नहीं होती। फ़ाइल क्षमताएं, बदले में, एक सुरक्षा जोखिम पेश करती हैं क्योंकि फ़ाइल क्षमताओं के साथ किसी फ़ाइल को निष्पादित करने की प्रक्रिया उन क्षमताओं को प्राप्त करने में सक्षम होगी।

परिवेश क्षमताएं सिस्टम सिस्टम सेवाओं को उनके .rc फ़ाइलों में क्षमताओं को कॉन्फ़िगर करने के लिए लॉन्च करती हैं, fs_config.c फ़ाइल में कॉन्फ़िगरेशन को विभाजित करने के बजाय एकल फ़ाइल में कॉन्फ़िगरेशन fs_config.c हैं। इसका मतलब यह है कि init द्वारा शुरू की गई किसी भी सेवा के लिए, आप उस सेवा के लिए क्षमताओं को कॉन्फ़िगर करने के लिए सेवा से जुड़ी .rc फ़ाइल का उपयोग कर सकते हैं।

परिवेश क्षमताओं init द्वारा शुरू की सेवाओं के लिए क्षमताओं (इस विधि के लिए एक एकल में सेवा विन्यास के लिए सभी पहलुओं रहता है स्थापित करने के लिए पसंदीदा तंत्र हैं .rc फाइल)। हम config.fs फ़ाइलों में कैप्स अनुभाग का उपयोग करके फ़ाइल सिस्टम क्षमताओं को कॉन्फ़िगर करने के बजाय परिवेश क्षमताओं का उपयोग करने की सलाह देते हैं।

Init द्वारा लॉन्च नहीं की गई सेवाओं के लिए क्षमताओं को सेट करते समय, fs_config.c का उपयोग करके फ़ाइल सिस्टम क्षमताओं को कॉन्फ़िगर करना जारी fs_config.c

परिवेश क्षमताओं को सक्षम करना

किसी दी गई सेवा के लिए परिवेश क्षमताओं को सक्षम करने के लिए, init में capabilities कीवर्ड का उपयोग करें। वर्तमान init भाषा के विवरण के लिए, init README.md का संदर्भ लें।

उदाहरण के लिए, AOSP सेवा wificond लिए परिवेश क्षमताओं को सक्षम करने के लिए। wificond सेवा के लिए .rc फ़ाइल उपयुक्त उपयोगकर्ता और समूहों को सेट करती है और सेवा को capabilities कीवर्ड का उपयोग करके निर्दिष्ट क्षमताएं देती capabilities :

service wificond /system/bin/wificond
    class main
    user wifi
    group wifi net_raw net_admin
    capabilities NET_RAW NET_ADMIN

संदर्भ कार्यान्वयन

संदर्भ कार्यान्वयन एंड्रॉयड आम है कर्नेल https://android.googlesource.com/kernel/common/

आवश्यक पैच

आवश्यक पैच सभी प्रासंगिक एंड्रॉइड आम कर्नेल शाखाओं को वापस भेज दिए गए हैं।

मुख्य परिवेश क्षमताओं पैच https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585859de0e8932b0fdb08 को इसमें वापस भेज दिया गया है:

एक छोटी सुरक्षा फ़िक्स https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffacac98deb855d3d3 में बैकपोर्ट किया गया है:

मान्यकरण

बायोनिक यूनिट परीक्षणों में परिवेश क्षमताओं के लिए यूनिट परीक्षण शामिल हैं। इसके अलावा, एंड्रॉइड में किसी सेवा के लिए "क्षमताओं" कीवर्ड का उपयोग करना, और फिर यह जांचना कि सेवा को अपेक्षित क्षमताएं मिलती हैं, इस सुविधा के रनटाइम परीक्षण के लिए अनुमति देगा।