Linux chcon कमांड: SELinux सुरक्षा संदर्भ और सावधानियां

परिचय: Linux में chcon की भूमिका

जब किसी Linux सिस्टम पर SELinux सक्रिय होता है, तो फ़ाइलों और प्रक्रियाओं के बीच एक्सेस नियंत्रण उनके सुरक्षा संदर्भ (Security Context) पर निर्भर करता है। ऐसे में chcon (Change Context) टूल व्यवस्थापकों को बिना मुख्य पॉलिसी बदले किसी फ़ाइल या डायरेक्टरी के SELinux लेबल को तुरंत और अस्थायी रूप से संशोधित करने की सुविधा देता है। इस ट्यूटोरियल में हम व्यावहारिक उदाहरणों के साथ chcon के मुख्य उपयोगों को समझेंगे और साथ ही यह भी जानेंगे कि सिस्टम रिबूट या रीस्टोर प्रक्रिया के दौरान किन बातों का विशेष ध्यान रखना आवश्यक है।

SELinux संदर्भ की जांच और chcon का बुनियादी सिंटैक्स

अभ्यास के लिए एक सुरक्षित और अलग कार्यक्षेत्र तैयार करने के उद्देश्य से टर्मिनल में mkdir -p /tmp/chcon_lab && cd /tmp/chcon_lab निष्पादित करें।

लैब डायरेक्टरी बनाएं और उसमें जाएं

इसके बाद संदर्भ सत्यापन के लिए परीक्षण फ़ाइल तैयार करने हेतु touch web_sample.html चलाएं।

परीक्षण फ़ाइल बनाएं

फ़ाइल पर वर्तमान में लागू SELinux लेबल देखने के लिए ls -Z web_sample.html कमांड का उपयोग किया जाता है।
यदि परिणाम में ? दिखाई दे, तो इसका सीधा अर्थ है कि मशीन में SELinux निष्क्रिय (Disabled) है या उस फ़ाइल सिस्टम पर कोई संदर्भ टैग असाइन नहीं किया गया है।
किसी भी पाथ का सुरक्षा संदर्भ अद्यतन करने के लिए chcon का मानक प्रारूप chcon [विकल्प] संदर्भ फ़ाइल_नाम होता है।
⚙️ [महत्वपूर्ण विकल्प]

-t : लक्षित ऑब्जेक्ट का सुरक्षा संदर्भ प्रकार (Type) बदलता है।
-u : संदर्भ से जुड़े उपयोगकर्ता (User) घटक को संशोधित करता है।
-r : संबंधित ऑब्जेक्ट की भूमिका (Role) को पुन: निर्धारित करता है।
-R : डायरेक्टरी और उसके भीतर मौजूद सभी सब-फ़ोल्डरों पर पुनरावर्ती (Recursive) रूप से लेबल लागू करता है।
--reference : किसी अन्य स्रोत फ़ाइल के संदर्भ को हुबहू कॉपी करके लक्ष्य फ़ाइल पर सेट करता है।
-v : निष्पादन के दौरान स्क्रीन पर विस्तृत विवरण (Verbose) प्रदर्शित करता है।

फ़ाइल के SELinux संदर्भ की जांच

व्यावहारिक परिदृश्य: विशिष्ट सुरक्षा प्रकार (-t) सेट करना

वेब दस्तावेज़ के संदर्भ को अपडेट करने का परीक्षण करने के लिए mkdir -p /tmp/chcon_lab && touch /tmp/chcon_lab/index.html कमांड की सहायता से आवश्यक डायरेक्टरी और HTML फ़ाइल तैयार करें।

वेब टेस्ट फ़ाइल तैयार करें

Apache या Nginx जैसे वेब सर्वर डिमन्स को फ़ाइल पढ़ने की स्पष्ट अनुमति देने के लिए chcon -t httpd_sys_content_t /tmp/chcon_lab/index.html कमांड निष्पादित करें, जिससे फ़ाइल का प्रकार httpd_sys_content_t पर सेट हो जाता है।

फ़ाइल प्रकार को httpd_sys_content_t में बदलें

लागू किए गए परिवर्तनों की पुष्टि के लिए ls -Z /tmp/chcon_lab/index.html चलाएं।
यदि आउटपुट में संदर्भ विवरण के स्थान पर ? आता है, तो यह दर्शाता है कि वर्तमान परिवेश में SELinux बंद होने के कारण सुरक्षा संदर्भ लागू नहीं हुआ है।

लागू संदर्भ की पुष्टि करें

संदर्भ क्लोनिंग (–reference) और डायरेक्टरी ट्री पर लागू करना (-R)

पदानुक्रमित संरचना (Hierarchical Structure) पर पुनरावर्ती संदर्भ लागू करने की प्रक्रिया समझने के लिए mkdir -p /tmp/chcon_lab/public_html && touch /tmp/chcon_lab/public_html/style.css निष्पादित करके डायरेक्टरी और सीएसएस फ़ाइल बनाएं।

सब-डायरेक्टरी और स्टाइलशीट बनाएं

संदर्भ क्लोनिंग प्रक्रिया के परीक्षण हेतु touch /tmp/chcon_lab/target_page.html चलाकर एक नया HTML दस्तावेज़ बनाएं।

लक्ष्य वेब पेज बनाएं

इसके बाद chcon --reference=/tmp/chcon_lab/index.html /tmp/chcon_lab/target_page.html निष्पादित करें, जिससे स्रोत फ़ाइल index.html का संपूर्ण सुरक्षा संदर्भ सीधे target_page.html पर दोहराया जाएगा।
--reference पैरामीटर के उपयोग से जटिल स्ट्रिंग्स याद रखे बिना किसी सत्यापित फ़ाइल का सटीक कॉन्फ़िगरेशन आसानी से अन्य फ़ाइलों में कॉपी किया जा सकता है।

संदर्भ क्लोन करें

पूरे डायरेक्टरी ट्री पर एक साथ लेबल लागू करने के लिए chcon -R -t httpd_sys_content_t /tmp/chcon_lab/public_html कमांड चलाएं।
यहाँ -R स्विच आंतरिक सभी सब-फ़ोल्डरों और फ़ाइलों को गहराई तक स्कैन करके निर्दिष्ट संदर्भ प्रकार असाइन कर देता है।

पुनरावर्ती संदर्भ असाइनमेंट

डायरेक्टरी और उसकी सामग्री पर प्रभावी सुरक्षा लेबल सत्यापित करने हेतु ls -laZ /tmp/chcon_lab/public_html निष्पादित करें।
परिणाम में दिख रहा ? चिन्ह बताता है कि इस होस्ट पर SELinux इनएक्टिव स्थिति में है, जिस कारण वास्तविक संदर्भ रिकॉर्ड नहीं हुआ है।

विस्तृत डायरेक्टरी संदर्भ की जांच

chcon की तकनीकी सीमाएं और आवश्यक सावधानियां

SELinux संदर्भ प्रबंधन और पुनर्प्राप्ति टूल्स प्राप्त करने के लिए apt-get update -qq && apt-get install -y policycoreutils कमांड चलाकर आवश्यक पैकेज स्थापित करें।

policycoreutils टूलकिट स्थापित करें

संदर्भ रीसेट प्रक्रिया का परीक्षण करने के उद्देश्य से touch /tmp/chcon_lab/warning_test.txt द्वारा एक प्रायोगिक फ़ाइल जनरेट करें।

परीक्षण फ़ाइल बनाएं

अब chcon -t tmp_t /tmp/chcon_lab/warning_test.txt रन करके फ़ाइल का संदर्भ प्रकार अल्पकाल के लिए tmp_t असाइन करें।
यहाँ यह समझना आवश्यक है कि chcon द्वारा किए गए संशोधन केवल रनटाइम स्तर पर मान्य होते हैं और यह सिस्टम की मुख्य सुरक्षा नीति डेटाबेस में दर्ज नहीं होते।

अस्थायी प्रकार लागू करें

किए गए परिवर्तनों की जांच के लिए ls -Z /tmp/chcon_lab/warning_test.txt चलाएं।
यदि टर्मिनल में ? आउटपुट आता है, तो इसका आशय है कि निष्क्रिय SELinux स्थिति के कारण संदर्भ डेटा संलग्न नहीं हो सका।

स्थिति का निरीक्षण करें

फ़ाइल को सिस्टम नीति के डिफ़ॉल्ट संदर्भ में वापस लाने के लिए restorecon -v /tmp/chcon_lab/warning_test.txt निष्पादित करें।
chcon के माध्यम से जोड़े गए सभी कस्टम टैग्स restorecon चलाने अथवा सिस्टम रीबूट के दौरान फ़ाइल सिस्टम रीलेबलिंग (autorelabel) होने पर मूल मानों पर रीसेट हो जाते हैं। अतः स्थायी कॉन्फ़िगरेशन बनाए रखने के लिए प्रशासकों को semanage fcontext का उपयोग करना चाहिए।

restorecon से संदर्भ पुनर्स्थापित करें

पुनर्प्राप्ति के उपरांत फ़ाइल स्थिति जांचने के लिए पुनः ls -Z /tmp/chcon_lab/warning_test.txt निष्पादित करें।
आउटपुट में प्रदर्शित ? प्रतीक स्पष्ट करता है कि सिस्टम में SELinux वर्तमान में कार्य नहीं कर रहा है।

अंतिम स्थिति की पुष्टि

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