लिनक्स क्षमताओं के साथ काम करना

परिचय

लिनक्स कर्नेल में विशेष विशेषताएँ होती हैं, जो प्रक्रियाओं को बाइनरी करती हैं और बाइनरी एक्ज़ीक्यूटेबल्स विशिष्ट विशेषाधिकार प्रदान करती हैं, जो आमतौर पर उन प्रक्रियाओं के लिए आरक्षित होती हैं जिनकी प्रभावी उपयोगकर्ता आईडी 0 है (रूट उपयोगकर्ता और केवल रूट उपयोगकर्ता के पास UID 0 है)।

यह लेख कुछ उपलब्ध क्षमताओं, उनके उपयोग और उन्हें स्थापित करने और हटाने के तरीके के बारे में बताएगा। कृपया ध्यान दें कि निष्पादकों पर क्षमताओं को स्थापित करना आपके सिस्टम की सुरक्षा से समझौता करने की क्षमता रखता है। जैसे, आपको उत्पादन में क्षमताओं को लागू करने से पहले एक गैर-उत्पादन प्रणाली पर परीक्षण पर विचार करना चाहिए।

आवश्यक शर्तें

  • एक लिनक्स सिस्टम जिस पर आपके पास रूट एक्सेस है (या तो रूट उपयोगकर्ता या sudo एक्सेस वाले उपयोगकर्ता के माध्यम से)।

व्याख्या

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

क्षमताओं को प्रक्रियाओं और निष्पादन योग्य फ़ाइलों पर सेट किया जा सकता है। किसी फ़ाइल के निष्पादन से उत्पन्न एक प्रक्रिया उस फ़ाइल की क्षमताओं को प्राप्त कर सकती है।

लिनक्स पर लागू की गई क्षमताएं कई हैं, और कई को उनके मूल रिलीज के बाद से जोड़ा गया है। उनमें से कुछ इस प्रकार हैं:

  • CAP_CHOWN: फाइल के यूजर आईडी और ग्रुप आईडी में बदलाव करें
  • CAP_DAC_OVERRIDE: ओवरराइड डीएसी (विवेकाधीन अभिगम नियंत्रण)। उदाहरण के लिए, वीटो बाईपास रीड / राइट / एक्जीक्यूटिव अनुमति चेक।
  • CAP_KILL: प्रक्रियाओं को संकेत भेजने के लिए बाईपास अनुमति की जाँच।
  • CAP_SYS_NICE: प्रक्रियाओं की स्पष्टता बढ़ाएँ (स्पष्टता का स्पष्टीकरण यहाँ पाया जा सकता है )
  • CAP_SYS_TIME: सिस्टम और वास्तविक समय हार्डवेयर घड़ी सेट करें

पूरी सूची के लिए, भागो man 7 capabilities

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

फ़ाइल पर क्षमताओं की स्थापना करते समय, हम उदाहरण के लिए लगभग "अनुमत" और "प्रभावी" का उपयोग करेंगे CAP_DAC_OVERRIDE+ep। ध्यान दें +ep, जो उपर्युक्त सेट को दर्शाता है।

फ़ाइल क्षमताओं के साथ काम करना

आवश्यक पैकेज

दो मुख्य उपकरण हैं, getcapऔर setcapजो क्रमशः इन विशेषताओं को देख और सेट कर सकते हैं।

  • डेबियन और उबंटू पर, ये उपकरण libcap2-binपैकेज द्वारा प्रदान किए जाते हैं , जिन्हें इसके साथ स्थापित किया जा सकता है:apt install libcap2-bin
  • CentOS और Fedora पर, libcapपैकेज की आवश्यकता है:yum install libcap
  • आर्क लिनक्स पर, वे द्वारा प्रदान की जाती हैं libcap:pacman -S libcap

पढ़ने की क्षमता

यह देखने के लिए कि किसी फ़ाइल में कोई क्षमता सेट है या नहीं, आप getcap /full/path/to/binaryउदाहरण के लिए चला सकते हैं :

 root@demo:~# getcap /usr/bin/ping
 /usr/bin/ping = cap_net_raw+ep
 root@demo:~# getcap /usr/bin/rcp
 /usr/bin/rcp = cap_net_bind_service+ep

यदि आप यह जानना चाहते हैं कि आपके सिस्टम में कौन-सी क्षमताएं पहले से ही सेट हैं, तो आप निम्न कमांड के साथ अपने पूरे फाइल-सिस्टम को पुन: खोज सकते हैं:

getcap -r /

इस तथ्य के कारण कि वर्चुअल फ़ाइल-सिस्टम (जैसे /proc) इन ऑपरेशनों का समर्थन नहीं करते हैं, ऊपर दिए गए आदेश में हजारों त्रुटियां उत्पन्न होंगी, इसलिए क्लीनर आउटपुट के लिए निम्नलिखित का उपयोग करें:

getcap -r / 2>/dev/null 

क्षमताओं को सौंपना और हटाना

किसी फ़ाइल पर एक विशेष क्षमता सेट करने के लिए, का उपयोग करें setcap "capability_string" /path/to/file

किसी फ़ाइल से सभी क्षमताओं को निकालने के लिए, उपयोग करें setcap -r /path/to/file

प्रदर्शन के लिए हम वर्तमान निर्देशिका में एक रिक्त फ़ाइल बनाएंगे, इसे एक क्षमता देंगे, और इसे हटा देंगे। निम्नलिखित के साथ शुरू करें:

root@demo:~# touch testfile
root@demo:~# getcap testfile

दूसरा कमांड कोई आउटपुट नहीं देता है, जिसका अर्थ है कि इस फ़ाइल की कोई क्षमता नहीं है।

अगला, फ़ाइल के लिए एक क्षमता सेट करें:

root@demo:~# setcap "CAP_CHOWN+ep" testfile
root@demo:~# getcap testfile
testfile = cap_chown+ep

"CAP_CHOWN + ep" का उपयोग एक उदाहरण के रूप में किया गया था, लेकिन किसी अन्य को इस तरीके से सौंपा जा सकता है।

अब, सभी क्षमताओं को यहां से हटा दें testfile:

root@demo:~# setcap -r testfile
root@demo:~# getcap testfile

फिर से, कोई आउटपुट नहीं होगा, क्योंकि "CAP_CHOWN + ep" को हटा दिया गया था।

निष्कर्ष

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



Leave a Comment

Ubuntu 16.04 पर लाइटकार्ट शॉपिंग कार्ट प्लेटफ़ॉर्म कैसे स्थापित करें

Ubuntu 16.04 पर लाइटकार्ट शॉपिंग कार्ट प्लेटफ़ॉर्म कैसे स्थापित करें

LiteCart PHP, jQuery और HTML में लिखा गया एक स्वतंत्र और ओपन सोर्स शॉपिंग कार्ट प्लेटफॉर्म है। यह ई-कॉमर्स सॉफ्टवेअर का उपयोग करने के लिए एक सरल, हल���का और आसान है

डेबियन पर सेटअप NFS शेयर

डेबियन पर सेटअप NFS शेयर

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

मोटोमो एनालिटिक्स को फेडोरा 28 पर कैसे स्थापित करें

मोटोमो एनालिटिक्स को फेडोरा 28 पर कैसे स्थापित करें

एक अलग प्रणाली का उपयोग? माटोमो (पूर्व में पिविक) एक ओपन सोर्स एनालिटिक्स प्लेटफॉर्म है, जो गूगल एनालिटिक्स का एक खुला विकल्प है। Matomo स्रोत को होस्ट किया गया है

Linux पर एक TeamTalk Server सेटअप करें

Linux पर एक TeamTalk Server सेटअप करें

टीमटॉक एक कॉन्फ्रेंसिंग प्रणाली है जो उपयोगकर्ताओं को उच्च-गुणवत्ता वाले ऑडियो / वीडियो वार्तालाप, टेक्स्ट चैट, स्थानांतरण फ़ाइलें और स्क्रीन साझा करने की अनुमति देती है। यह मैं

विंडोज सर्वर पर Garrys मॉड कैसे स्थापित करें

विंडोज सर्वर पर Garrys मॉड कैसे स्थापित करें

परिचय यह आलेख बताएगा कि विंडोज सर्वर 2012 पर गारस मोड सर्वर को कैसे डाउनलोड और इंस्टॉल किया जाए। यह गाइड गहराई में होने के लिए बनाया गया है।

कैसे स्थापित करें और अपने CentOS 7 सर्वर पर CyberPanel कॉन्फ़िगर करें

कैसे स्थापित करें और अपने CentOS 7 सर्वर पर CyberPanel कॉन्फ़िगर करें

एक अलग प्रणाली का उपयोग? परिचय CyberPanel बाजार पर पहला नियंत्रण पैनल है जो दोनों खुला स्रोत है और OpenLiteSpeed ​​का उपयोग करता है। क्या थी?

CentOS पर FFmpeg कैसे स्थापित करें

CentOS पर FFmpeg कैसे स्थापित करें

FFmpeg ऑडियो और वीडियो रिकॉर्ड करने, कन्वर्ट करने और स्ट्रीम करने के लिए एक लोकप्रिय ओपन सोर्स समाधान है, जो सभी प्रकार की ऑनलाइन स्ट्रीमिंग सेवाओं में व्यापक रूप से उपयोग किया जाता है। मैं

SSH का उपयोग करके LUKS डिस्क एन्क्रिप्शन पर LVM को दूरस्थ रूप से अनलॉक करने के लिए CentOS 7 स्थापित और सेटअप करें

SSH का उपयोग करके LUKS डिस्क एन्क्रिप्शन पर LVM को दूरस्थ रूप से अनलॉक करने के लिए CentOS 7 स्थापित और सेटअप करें

एलयूकेएस (लिनक्स यूनिफाइड की सेटअप) लिनक्स के लिए उपलब्ध विभिन्न डिस्क एन्क्रिप्शन प्रारूपों में से एक है जो प्लेटफॉर्म एग्नॉस्टिक है। यह ट्यूटोरियल आपको बुद्धि प्रदान करेगा

अपने Vultr VPS को कैसे एक्सेस करें

अपने Vultr VPS को कैसे एक्सेस करें

Vultr अपने VPS को कॉन्फ़िगर करने, स्थापित करने और उपयोग करने के लिए कई अलग-अलग तरीके प्रदान करता है। क्रेडेंशियल एक्सेस करें आपके VPS के लिए डिफ़ॉल्ट एक्सेस क्रेडेंशियल ar

CentOS 7 पर अक्टूबर CMS को कैसे स्थापित करें

CentOS 7 पर अक्टूबर CMS को कैसे स्थापित करें

अक्टूबर एक खुला स्रोत सामग्री प्रबंधन प्रणाली है जो लारवेल PHP फ्रेमवर्क पर आधारित है। एक सुरुचिपूर्ण इंटरफ़ेस और एक संक्षिप्त मॉड्यूलर वास्तुकला के साथ