चेरोट "जेल" - यह क्या है और मैं इसका उपयोग कैसे करूं?


99

मैंने लिनोक्स के तहत चेरोट जेल के बारे में बहुत कुछ सुना / पढ़ा है लेकिन अभी तक इसका उपयोग नहीं किया है (मैं फेडोरा दिन-प्रतिदिन का उपयोग करता हूं), तो चेरोट "जेल" क्या है? मुझे इसका उपयोग कब और क्यों करना चाहिए / इसका उपयोग नहीं करना चाहिए और क्या कुछ और है जो मुझे पता होना चाहिए? मैं एक बनाने के बारे में कैसे जाऊँगा?

chroot 

यहां उत्तर "मैं इसे श्रेणी का उपयोग कैसे करूं" पर संक्षिप्त प्रतीत होता है? :(
अलेक्जेंडर मिल्स

जवाबों:


87

एक चेरोट जेल एक प्रक्रिया और उसके बच्चों को बाकी व्यवस्था से अलग करने का एक तरीका है। इसका उपयोग केवल उन प्रक्रियाओं के लिए किया जाना चाहिए जो रूट के रूप में नहीं चलती हैं, क्योंकि रूट उपयोगकर्ता जेल से बहुत आसानी से बाहर निकल सकते हैं।

विचार यह है कि आप एक निर्देशिका ट्री बनाते हैं, जहाँ आप एक प्रक्रिया को चलाने के लिए आवश्यक सभी फाइल को कॉपी या लिंक करते हैं। फिर आप chroot()इस नए पेड़ के आधार पर रूट डायरेक्टरी को बदलने के लिए सिस्टम कॉल का उपयोग करते हैं और उस चिरोटिड वातावरण में चलने वाली प्रक्रिया को शुरू करते हैं। चूंकि यह वास्तव में संशोधित रूट के बाहर पथ को संदर्भित नहीं कर सकता है, यह उन स्थानों पर दुर्भावनापूर्ण रूप से संचालन (रीड / राइट आदि) नहीं कर सकता है।

लिनक्स पर, बाइंड माउंट्स का उपयोग करना चेरोट पेड़ को आबाद करने का एक शानदार तरीका है। इसका उपयोग करते हुए, आप उदाहरण के लिए, जैसे /libऔर /usr/libजब तक नहीं खींचते , तो आप फ़ोल्डर्स में खींच सकते हैं /usr। बस उन निर्देशिका पेड़ों को बांधें जिन्हें आप जेल निर्देशिका में बनाना चाहते हैं।


10
आपका जवाब बहुत अच्छा है। हालांकि उल्लेख करने के लिए एक बात, चुरोट एक सुरक्षित तंत्र नहीं है (एक प्रक्रिया जेल से बाहर निकल सकती है अगर यह जड़ हो जाती है और कभी-कभी भले ही)। असली जेलों को फ्रीबीएसडी जेलों और इस तरह से लागू किया जा सकता है। इसे देखें en.wikipedia.org/wiki/FreeBSD_jail#Similar_technologies
nc3b 20

3
Gentoo इंस्टॉल प्रक्रिया एक चेरोट का उपयोग करती है ताकि आप GRUB और लिनक्स कर्नेल आदि को स्थापित करने से पहले अपना नया OS सेटअप कर सकें
क्रिस हुआंग-लीवर

3
सभी लिनक्स नामस्थानों का उपयोग करके पूर्ण जेल वाले शेल के लिए फायरजेल पर एक नज़र डालें । डिब और आरपीएम पैकेज उपलब्ध हैं। आम तौर पर, मैं कर्नेल 3.18 या बाद की सिफारिश करूंगा, हालांकि, एक ज्ञात समस्या के कारण नए सॉफ़्टवेयर को स्थापित करने में सक्षम नहीं है या जब firejailचल रहा है तो उपयोगकर्ता प्रबंधन करते हैं ।
CivFan

बढ़िया जवाब! - हालाँकि कुछ बुनियादी उदाहरण देखने में अच्छे लगेंगे।
गेब्रियल स्टेपल्स

क्या चेरोट जेल के तहत कोई उपयोगकर्ता /binरूट उपयोगकर्ता द्वारा स्थापित बाइनरी फ़ाइलों को कॉल कर सकता है ? @ बैन कंबाइन
alper

50

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

-- foo
    -- bar
    -- baz
-- bazz

यदि आप chroot fooऔर करते हैं ls /, तो आप देखेंगे:

-- bar
-- baz

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


16
एक chroot"जेल" से बचने के लिए इसका उदाहरण देना उपयोगी होगा । मैंने जो मामला देखा है, वह रूट विशेषाधिकारों को बढ़ाने की आवश्यकता है। क्या मूल विशेषाधिकारों के लिए खुद को आगे बढ़ाने वाली प्रक्रिया को रोकना मुश्किल है?
CivFan

4
यह अभी भी "कारावास" है इसलिए "जेल" एक अच्छा आशुलिपि है। क्या "स्तर 3 नियंत्रण क्षेत्र" बेहतर होगा?!
माइकडब्ल्यू

4
यह शब्द FreeBSD जेल से आता है। जेल चुरोट पर बनी है। जेल का इरादा सुरक्षा समस्याओं को हल करने का chrootनहीं था। इस कारण लोगों को अक्सर अप मिश्रण chrootऔर jailsएक ही बात मतलब है। वे नहीं करते। "जेल" शब्द बिल चेसविक द्वारा गढ़ा गया है जब उन्होंने पटाखा पकड़ने के लिए एक हनीपोट
BugununterUK

तो आप बात करते हैं, मेरे मामलेchroot jail में एक अच्छे विचार का उपयोग नहीं कर रहे हैं ?
शफीज़ादेह

10

मूल रूप से आप सिर्फ अपने वातावरण की रूट डायरेक्टरी बदल रहे हैं। इसलिए

/

हो जाता है

/some-jail/ (or whatever directory you want)

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


6

"मैं कब और क्यों इसका इस्तेमाल कर सकता हूं?"

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

उदाहरण के लिए मेरे पास एक एम्बेडेड डिवाइस है जो लिनक्स पर चल रहा है, मैं कुछ बैश के संचालन की जांच करना चाहूंगा बिना) वास्तविक डिवाइस पर इसे चलाने के बाद से (क्योंकि मेरे डेस्कटॉप पर बेहतर उपकरण हैं और डिवाइस को ईंट नहीं करना चाहते हैं) बी चल रहा है। यह मेरे डेस्कटॉप पर वास्तविक है (क्योंकि मैं नहीं चाहता कि मेरा डेस्कटॉप सिस्टम गड़बड़ हो)

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

(बेशक, पूरे हॉग जाने के लिए, आप QEMU या Docker, या VM के अंदर दौड़ सकते हैं, लेकिन इसमें VM छवि बनाना शामिल होगा आदि - बहुत अधिक काम)

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