आसान chroot

7 min

language: ja bn en es hi pt ru zh-cn zh-tw

नमस्ते, मैं अक्षम हूँ।
बस यह कि, किसी तरह, मैं क्लासिक वर्चुअलाइजेशन के इतिहास में पुराने chroot के साथ कुछ कर सकता हूँ। इस बार, मैं 64G USB पर Arch स्थापित करूँगा।

ड्राइव तैयार करना

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 238.5G  0 disk 
└─sda1   8:1    0 238.5G  0 part /var/lib/docker
                                 /
sdb      8:16   1  57.8G  0 disk 
└─sdb1   8:17   1  57.8G  0 part 
$ sudo fdisk /dev/sdb
$ sudo mkfs.ext4 /dev/sdb1
$ sudo mkdir /mnt/arch
$ sudo mount /dev/sdb1 /mnt/arch

कर्नेल और अन्य की तैयारी

$ pacstrap /mnt/arch base linux linux-firmware man-db vim
bash: pacstrap: कमांड नहीं मिला

ओह

$ sudo pacman -S arch-install-scripts
$ sudo pacstrap /mnt/arch base linux linux-firmware man-db vim

arch-chroot करना

$ sudo arch-chroot arch
[alleycat /]# ls
bin  boot  dev  etc  home  lib  lib64  lost+found  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[alleycat /]# date
Fri Nov 29 14:36:48 UTC 2024
[alleycat /]# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
[alleycat /]# date
Fri Nov 29 23:37:02 JST 2024
[alleycat /]# hwclock --systohc
[alleycat /]# date
Fri Nov 29 23:37:08 JST 2024

यह Devuan में भी लगता है।

arch-install-scripts/stable के बराबर इंस्टॉलेशन स्क्रिप्ट क्या है?

$ sudo apt search debian-installer 
सॉर्ट किया जा रहा है... हो गया
पूर्ण पाठ खोज... हो गया  
bf-utf-source/stable 0.08+nmu2 all
  डेबियन इंस्टालर बनाने के लिए आवश्यक फोंट के लिए स्रोत

cpio-win32/stable 2.13+dfsg-7.1 all
  GNU cpio -- फ़ाइलों के अभिलेखागार को प्रबंधित करने के लिए एक प्रोग्राम (win32 बिल्ड)

debian-installer/stable 20230607+deb12u8devuan1 amd64
  Devuan का डेबियन इंस्टालर

ऐसा लगता है कि यह वास्तव में Devuan's debian installer है।
इसी तरह की व्यवस्था के साथ, debootstrap का उपयोग करके एक न्यूनतम वातावरण बनाना संभव लगता है।
mmdebstrap के साथ एक न्यूनतम रूट फ़ाइल सिस्टम बनाना

इस बार, मैं जानबूझकर chroot जेल का उपयोग कर रहा हूँ, आंशिक रूप से मनोरंजन के लिए, लेकिन यदि आप इस पूरे chroot वातावरण को एक पूर्ण निष्पादन वातावरण के रूप में स्थापित करते हैं और SSH अनुमतियाँ देते हैं, तो संसाधनों को आसानी से विभाजित करना संभव है, और विश्वविद्यालय में मेरे दोस्त भी मुफ्त में एक समृद्ध GNU/Linux निष्पादन वातावरण का उपयोग कर सकते हैं। हालांकि, SSH वातावरण chroot से बाहर नहीं निकल सकता है, इसलिए यह होस्ट मशीन के रूट डायरेक्टरी तक नहीं पहुँच सकता है। मैं इस बात को लेकर चिंतित था कि kvm के साथ निर्माण करना भी अच्छा है, लेकिन यह काफी जटिल हो सकता है, और यदि आप स्केल आउट नहीं कर रहे हैं तो क्या यह आवश्यक है? इसके अतिरिक्त, यदि मेरी एक विशिष्ट इच्छा है, जैसे कि किसी सेवा को एक अलग डिस्क पर बनाना जिसे मैं होस्ट OS डिस्क पर नहीं चलाना चाहता, तो यह chroot वातावरण काफी उपयोगी हो सकता है।

मूल रूप से, chroot जेल OpenBSD जैसे सुरक्षा उत्साही लोगों द्वारा भी समर्थित है, इसलिए यदि इसे उस वातावरण में ठीक से चलाया जाए तो यह एक मजबूत दोस्त है, लेकिन मुझे लगता है कि इसमें महारत हासिल करना काफी मुश्किल है। यह हमेशा मेरे दिमाग में था, और मैं कुछ समय से यह पता लगाने की कोशिश कर रहा था कि इसका उपयोग कैसे किया जाए, और अब मुझे लगता है कि मुझे कुछ उपयोग मिल रहे हैं, जैसे BUMP OF CHICKEN के 'टेंटाई कानसोकू' (खगोल विज्ञान) गीत का एक वाक्यांश।

वैसे, इसे स्थापित करने के बाद डिस्क पर शेष स्थान कुछ ऐसा है।

$ df -h
~~~
/dev/sdb1         57G  2.0G   52G    4% /mnt/arch

chroot सुरक्षित क्यों है?

उदाहरण के लिए, यदि होस्ट मशीन पर इस तरह की PID और शेल मौजूद हैं:

$ sleep 10000 & echo $$
[1] 21235
3936

यदि आप chroot वातावरण से इसे खत्म करने की कोशिश करते हैं (grep -v का उपयोग न करने के लिए क्षमा करें):

[alleycat /]# ps -ef | grep sleep
1000     21235  3936  0 00:30 ?        00:00:00 sleep 10000
root     21244 17618  0 00:31 ?        00:00:00 grep --colour=auto sleep
[alleycat /]# kill -9 21235
bash: kill: (21235) - ऐसी कोई प्रक्रिया नहीं है
[alleycat /]# kill -9 3936 
bash: kill: (3936) - ऐसी कोई प्रक्रिया नहीं है

आप PID देख सकते हैं, लेकिन आप kill नहीं कर सकते। वैसे, इसका उल्टा संभव है।

इसलिए, यदि chroot के भीतर चल रही प्रक्रिया पर किसी तरह से हमला किया जाता है, तो यह होस्ट मशीन तक नहीं पहुँच सकती है, इसलिए यह सुरक्षित है। यह मेरी सरल समझ है।

क्या इसे Plan9 प्रोटोकॉल के साथ भी जोड़ा जा सकता है?

उदाहरण के लिए, यदि कोई डिस्क है जिसे आप chroot वातावरण से भी एक्सेस करना चाहते हैं, तो मुझे लगता है कि इसे साझा करना संभव है।
और इस तरह Windows का WSL बना।
WSL Windows और WSL के बीच फ़ाइलों को साझा करने के लिए 9P प्रोटोकॉल का उपयोग करता है

WSL अब है
Windows Subsystem for Plan9/GNU/Linux
WSPGL, है ना?

Related Posts