कर्नेल: नामस्थान का समर्थन


15

मैं सोच रहा हूं कि लिनक्स कर्नेल में वास्तव में "नेमस्पेस सपोर्ट" फीचर क्या है। मैं कर्नेल 3.11.1 (इस समय नवीनतम स्थिर कर्नेल) का उपयोग कर रहा हूं।

अगर मैं इसे अक्षम करने का निर्णय लेता हूं, तो क्या मैं अपने सिस्टम में कोई बदलाव देखूंगा?

और यदि कोई व्यक्ति नेमस्पेस का उपयोग करने का निर्णय लेता है, तो क्या यह NAMESPACES=Yकर्नेल में संकलित करने के लिए पर्याप्त है , या क्या उसे यूजरस्पेस टूल की भी आवश्यकता है?


5
नेमस्पेस काफी अच्छी तरह से यहां समझाए गए हैं: lwn.net/Articles/531114 (उत्तर नहीं है, क्योंकि मैं वास्तव में अपने प्रश्नों का जवाब दे-मैं कर रहा हूँ पाठ का एक ढेर करने के लिए आप इशारा करते हुए)
derobert

जवाबों:


21

संक्षेप में, नामस्थान एक बड़े लिनक्स सिस्टम के अंदर एक आभासी लिनक्स सिस्टम बनाने का एक तरीका प्रदान करते हैं। यह एक वर्चुअल मशीन को चलाने से अलग है जो एक अनप्रीविलाइज्ड प्रक्रिया के रूप में चलती है: वर्चुअल मशीन होस्ट में एक एकल प्रक्रिया के रूप में दिखाई देती है, जबकि एक नेमस्पेस के अंदर चलने वाली प्रक्रियाएं अभी भी होस्ट सिस्टम पर चल रही हैं।

एक बड़ी प्रणाली के अंदर चलने वाली एक आभासी प्रणाली को एक कंटेनर कहा जाता है । एक कंटेनर का विचार यह है कि कंटेनर के अंदर चलने वाली प्रक्रियाओं का मानना ​​है कि वे सिस्टम में केवल प्रक्रियाएं हैं। विशेष रूप से, कंटेनर के अंदर रूट उपयोगकर्ता के पास कंटेनर के बाहर रूट विशेषाधिकार नहीं हैं (ध्यान दें कि यह कर्नेल के हाल के पर्याप्त संस्करणों में केवल सच है)।

Namespaces एक समय में एक फीचर का वर्चुअलाइजेशन करता है। नामस्थान के कुछ उदाहरण हैं:

  • उपयोगकर्ता नामस्थान - यह प्रक्रियाओं को व्यवहार करने की अनुमति देता है जैसे कि वे नामस्थान के अंदर और बाहर विभिन्न उपयोगकर्ताओं के रूप में चल रहे थे। विशेष रूप से, नामस्थान के अंदर यूआईडी 0 के रूप में चलने वाली प्रक्रियाओं में सुपरसुसर विशेषाधिकार हैं जो केवल उसी नामस्थान में चलने वाली प्रक्रियाओं के संबंध में हैं।
    लिनक्स कर्नेल 3.8 के बाद से, अनपेक्षित उपयोगकर्ता उपयोगकर्ता नामस्थान बना सकते हैं। यह एक सामान्य उपयोगकर्ता को उन सुविधाओं का उपयोग करने की अनुमति देता है जो रूट पर आरक्षित हैं (जैसे रूटिंग टेबल बदलना या क्षमताओं को सेट करना)।
  • PID नामस्थान - PID नाम स्थान के अंदर की प्रक्रियाएँ उस नाम स्थान के बाहर की प्रक्रियाओं को मार या ट्रेस नहीं कर सकती हैं।
  • माउंट नेमस्पेस - यह प्रक्रियाओं को फाइल सिस्टम के बारे में अपना दृष्टिकोण रखने की अनुमति देता है। यह दृश्य एक आंशिक दृश्य हो सकता है, जिससे फाइल सिस्टम के कुछ टुकड़ों को छिपाया जा सकता है और टुकड़ों को फिर से लगाया जा सकता है ताकि निर्देशिका पेड़ अलग-अलग जगहों पर दिखाई दें। माउंट नेमस्पेस पारंपरिक यूनिक्स फीचर चेरोट को सामान्य बनाता है , जो प्रक्रियाओं को एक विशेष सबट्री तक सीमित रखने की अनुमति देता है।
  • नेटवर्क नेमस्पेस - नेटवर्किंग संसाधनों (नेटवर्क उपकरणों) को अलग करने की अनुमति देता है और इस प्रकार प्रक्रियाओं के अलगाव को बढ़ाता है।

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

अभी भी कुछ एप्लिकेशन हैं जो नेमस्पेस का उपयोग करते हैं। यहाँ कुछ है:

देखें माइकल केररिस्क द्वारा LWN लेख श्रृंखला में अधिक जानकारी के लिए।


6

लिनक्स कर्नेल नेमस्पेस एक अवधारणा है जिसका उपयोग सिस्टम संसाधन तक पहुंच के संबंध में प्रक्रियाओं के एक समूह को दूसरों से अलग करने के लिए किया जाता है। उदाहरण के लिए दो अलग पीआईडी ​​नामस्थान में समान पीआईडी ​​के साथ प्रक्रिया हो सकती है लेकिन पूरी तरह से अलग प्रक्रिया छवि। वे अक्सर ओएस-स्तर वर्चुअलाइजेशन में उपयोग किए जाते हैं, जिसमें एक ही कर्नेल एक साथ विभिन्न ऑपरेटिंग सिस्टम चला रहा है - सभी को लिनक्स आधारित होना चाहिए (क्योंकि वे कर्नेल को स्पष्ट रूप से साझा करते हैं), लेकिन अलग-अलग वितरण और संस्करण हो सकते हैं। उदाहरण के लिए LXC देखें ।

आप सिस्टम-आधारित सिस्टम पर उदाहरण के लिए इसे अक्षम करने का नोटिस कर सकते हैं, क्योंकि सिस्टमड अपने कंटेनर सुविधा के लिए नामस्थान का उपयोग करने में सक्षम है । इसलिए बहुत कुछ इस बात पर निर्भर करता है कि आप किस वितरण का उपयोग कर रहे हैं और आप सिस्टम के साथ क्या करना चाहते हैं।

लगभग हर कर्नेल सुविधा के साथ, आपको निश्चित रूप से किसी प्रकार के उपयोगकर्ता स्थान कार्यक्रमों की आवश्यकता होती है - भले ही आपने कर्नेल से विशेष फ़ाइलों के माध्यम से बात की हो (मुझे यकीन नहीं है कि आप कर सकते हैं), आमतौर पर विशेष उपकरणों पर भरोसा करना बेहतर होता है, क्योंकि वे प्रस्ताव फ्रेंडली एपीआई।


1

नाम के उपयोग का उदाहरण देने के लिए, SELinux (MLS या सख्त) सक्षम सिस्टम में। Namespace आमतौर पर प्रत्येक उपयोगकर्ता के लिए अलग /tmp- अलग और या /homeनिर्देशिका बनाने के लिए उपयोग किया जाता है । वे निर्देशिकाएं केवल दिखाई देती हैं: उपयोगकर्ता, एक ही लेबल वाले उपयोगकर्ता, कर्नेल और विशेषाधिकार प्राप्त उपयोग वाले उपयोगकर्ता। /tmpउपयोगकर्ता नाम के SELinux-MLS लेबल से मिलान करने के लिए नाम-एड निर्देशिका को SELinux-MLS द्वारा लेबल किया जाता है। इस परिदृश्य में /tmpउपयोगकर्ता द्वारा देखी जाने वाली निर्देशिका को वास्तव में /tmp( /var/user-tmp) के अलावा कहीं और माउंट किया जा सकता है । उपयोगकर्ता हालांकि केवल /tmpउन फ़ाइलों के साथ देखता है जो उपयोगकर्ता की गतिविधि के कारण बनाई गई हैं। उपयोगकर्ता कभी भी ऐसी कोई फ़ाइल नहीं देखेगा /tmpजो अन्य उपयोगकर्ताओं के उत्पाद हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.