परिचय
लिनक्स आर्किटेक्चर में chroot कमांड एक शक्तिशाली टूल है, जिसका इस्तेमाल किसी खास प्रोसेस के लिए रूट डायरेक्टरी (/) का दायरा बदलने हेतु किया जाता है। इस गाइड में हम एक सुरक्षित मिनी सैंडबॉक्स तैयार करने से लेकर, लाइव एनवायरनमेंट के जरिए क्षतिग्रस्त ओएस को रिकवर करने और सुरक्षित SFTP डायरेक्टरी सेटअप करने तक के व्यावहारिक उपयोगों को विस्तार से समझेंगे।
BusyBox आधारित न्यूनतम सैंडबॉक्स और chroot का मूलभूत सिद्धांत
किसी भी बाहरी शेयर्ड लाइब्रेरी पर निर्भर हुए बिना एक आत्मनिर्भर और सुरक्षित वातावरण बनाने के लिए सबसे पहले sudo apt-get update -qq && sudo apt-get install -y busybox-static चलाकर स्टैटिक बाइनरी पैकेज इंस्टॉल करें।

अब जेल एनवायरनमेंट के नए रूट फ़ोल्डर और उसमें बाइनरी फाइलों को व्यवस्थित करने के लिए sudo mkdir -p /opt/mini-jail/bin कमांड से आवश्यक डायरेक्टरी स्ट्रक्चर तैयार करें।

आइसोलेटेड स्पेस में शेल और बुनियादी सिस्टम यूटिलिटीज को काम करने लायक बनाने के लिए sudo cp /bin/busybox /opt/mini-jail/bin/ के जरिए मुख्य निष्पादन योग्य फ़ाइल को कॉपी कर लें।

मूल रूप से chroot किसी प्रोसेस के संदर्भ में रूट डायरेक्टरी (/) को रिपोजिशन कर देता है, जिससे वह प्रक्रिया होस्ट सिस्टम के अन्य संवेदनशील हिस्सों तक नहीं पहुंच पाती।
जब हम यह कमांड रन करते हैं, तो प्रोसेस के लिए /opt/mini-jail ही प्राथमिक रूट बन जाता है और आइसोलेशन के अंदर से केवल स्थानीय फाइलें ही दिखाई देती हैं।
⚙️ [महत्वपूर्ण कमांड विकल्प]
--userspec=USER:GROUP : सैंडबॉक्स वातावरण में चलने वाले प्रोसेस का यूजर और ग्रुप ओनरशिप निर्धारित करता है।--groups=G_LIST : जेल के भीतर लागू होने वाले सहायक समूहों (सप्लीमेंट्री ग्रुप्स) की सूची कॉमा द्वारा अलग करके सेट करता है।--skip-chdir : नए रूट में स्विच करते समय करंट वर्किंग डायरेक्टरी को जबरन बदलने से रोकता है।

शेयर्ड लाइब्रेरी निर्भरताओं के साथ स्टैंडअलोन Bash जेल सेटअप
Bash शेल और उसके संचालन के लिए जरूरी शेयर्ड ऑब्जेक्ट्स को व्यवस्थित रखने हेतु sudo mkdir -p /opt/bash-jail/{bin,lib,lib64} के साथ अलग-अलग फ़ोल्डर स्ट्रक्चर बनाएं।

जेल वातावरण में इंटरएक्टिव कमांड लाइन और फाइल नेविगेशन की सुविधा देने के लिए sudo cp /bin/bash /bin/ls /opt/bash-jail/bin/ चलाकर दोनों बाइनरी फाइलें ट्रांसफर करें।

डायनामिक रूप से लिंक्ड bash और ls को सुचारू रूप से चलाने के लिए आवश्यक सभी सिस्टम लाइब्रेरीज़ को sudo cp -a /lib/x86_64-linux-gnu /opt/bash-jail/lib/ कमांड से सुरक्षित रूप से कॉपी करें।

64-बिट प्रोग्रामों के डायनामिक लिंकर और कोर रनटाइम घटकों को लक्ष्य स्थान पर उपलब्ध कराने हेतु sudo cp -a /lib64/* /opt/bash-jail/lib64/ निष्पादित करें।

इसके बाद sudo chroot /opt/bash-jail /bin/bash -c "ls -la /" चलाकर जांचें कि क्या नया वातावरण स्वतंत्र रूप से काम कर रहा है।
आउटपुट स्पष्ट करता है कि प्रोसेस होस्ट के सम्पूर्ण फाइल सिस्टम से कट चुका है और उसे केवल वे ही डायरेक्टरीज (bin, lib, lib64) दिखाई दे रही हैं जो हमने आइसोलेटेड पाथ में रखी थीं।

सिस्टम रिकवरी के लिए वर्चुअल फाइल सिस्टम बाइंड माउंट और chroot
क्षतिग्रस्त ऑपरेटिंग सिस्टम की फाइलों तक पहुंचने के लिए सबसे पहले sudo mkdir -p /mnt/sysroot कमांड चलाकर एक नया माउंट डेस्टिनेशन तैयार करें।

रिकवर किए जाने वाले रूट पार्टीशन को इस नए पाथ से लिंक करने के लिए sudo mount --bind / /mnt/sysroot कमांड का उपयोग करें।

हार्डवेयर डिवाइस नोड्स और स्टोरेज डिस्क का सीधा एक्सेस बनाए रखने के लिए होस्ट के डिवाइस ट्री को sudo mount --bind /dev /mnt/sysroot/dev के जरिए बाइंड माउंट किया जाता है।

सिस्टम डायग्नोस्टिक्स और प्रोसेस मॉनिटरिंग टूल्स को सक्रिय कर्नेल डेटा प्रदान करने के लिए वर्चुअल फाइल सिस्टम को sudo mount --bind /proc /mnt/sysroot/proc से जोड़ें।

कर्नेल हार्डवेयर इंटरफेस और ड्राइवर पैरामीटर्स को रिकवरी एनवायरनमेंट में उपलब्ध कराने के लिए sudo mount --bind /sys /mnt/sysroot/sys निष्पादित करें।

अब सभी जरूरी वर्चुअल सिस्टम्स के सक्रिय होने के बाद sudo chroot /mnt/sysroot /bin/bash -c "uname -a && df -h /" चलाकर कर्नेल स्थिति और डिस्क स्पेस का सत्यापन करें।
परिणाम दर्शाता है कि होस्ट कर्नेल सही ढंग से पहचान में आ रहा है और माउंटेड लोकेशन प्राथमिक रूट के रूप में कार्य कर रही है, जिससे GRUB बूटलोडर रिपेयर या पैकेज रीइंस्टॉलेशन सीधे किया जा सकता है।

रिफ्रेश या मेंटेनेंस का काम समाप्त होने के बाद डेटा करप्शन से बचने के लिए माउंट किए गए सभी सब-फाइल सिस्टम्स को उल्टे क्रम में अनमाउंट करना अनिवार्य है:

उन्नत सुरक्षा के लिए SFTP-ओनली chroot डायरेक्टरी और अनुमतियाँ
यूजर को इंटरएक्टिव शेल एक्सेस से पूरी तरह वंचित रखते हुए केवल सुरक्षित फाइल ट्रांसफर की अनुमति देने के लिए sudo id -u jailuser &>/dev/null || sudo useradd -m -d /home/jailuser -s /bin/false jailuser चलाकर विशेष यूजर अकाउंट बनाएं।

सीमित यूजर को फाइल्स अपलोड करने की सुविधा देने के लिए एक विशिष्ट डायरेक्टरी sudo mkdir -p /home/jailuser/uploads तैयार करें।

OpenSSH के सुरक्षा नियमों के अनुसार, chroot जेल के रूट डायरेक्टरी का मालिकाना हक अनिवार्य रूप से root के पास होना चाहिए और अन्य किसी को इसमें राइट परमिशन नहीं होनी चाहिए। इसलिए sudo chown root:root /home/jailuser && sudo chmod 755 /home/jailuser लागू करें।

यूजर केवल अपने असाइन किए गए फोल्डर में फाइलों को जोड़ या संशोधित कर सके, इसके लिए sudo chown jailuser:jailuser /home/jailuser/uploads चलाकर स्वामित्व सौंपें।

ls -ld /home/jailuser /home/jailuser/uploads चलाकर फोल्डर अनुमतियों की दोबारा पुष्टि करें।
परिणाम में स्पष्ट दिखाई देगा कि मुख्य जेल पाथ root:root और drwxr-xr-x द्वारा सुरक्षित है, जबकि अंदरूनी uploads डायरेक्टरी jailuser:jailuser के अधीन है—यह आदर्श विन्यास अनधिकृत सिस्टम एस्केप को रोकता है।

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