रनिंग unshare -m
कॉलिंग प्रक्रिया को अपने माउंट नेमस्पेस की एक निजी प्रति देता है, और फाइल सिस्टम विशेषताओं को भी अनचाहे रखता है ताकि यह अब अपनी रूट डायरेक्टरी, वर्तमान निर्देशिका या umask विशेषताओं को किसी अन्य प्रक्रिया के साथ साझा न करे।
तो उपरोक्त पैराग्राफ क्या कहता है? आइए हम एक सरल उदाहरण का उपयोग करके देखें और समझें।
टर्मिनल 1:
मैं पहले टर्मिनल में नीचे कमांड करता हूं।
#Creating a new process
unshare -m /bin/bash
#creating a new mount point
secret_dir=`mktemp -d --tmpdir=/tmp`
#creating a new mount point for the above created directory.
mount -n -o size=1m -t tmpfs tmpfs $secret_dir
#checking the available mount points.
grep /tmp /proc/mounts
अंतिम कमांड मुझे आउटपुट के रूप में देता है,
tmpfs /tmp/tmp.7KtrAsd9lx tmpfs rw,relatime,size=1024k 0 0
अब, मैंने निम्नलिखित कमांड भी किया।
cd /tmp/tmp.7KtrAsd9lx
touch hello
touch helloagain
ls - lFa
ls
कमांड का आउटपुट है,
ls -lFa
total 4
drwxrwxrwt 2 root root 80 Sep 3 22:23 ./
drwxrwxrwt. 16 root root 4096 Sep 3 22:22 ../
-rw-r--r-- 1 root root 0 Sep 3 22:23 hello
-rw-r--r-- 1 root root 0 Sep 3 22:23 helloagain
तो यह सब करने में कौन सी बड़ी बात है? मुझे ऐसा क्यों करना चाहिए?
मैं अब एक और टर्मिनल खोलता हूं ( टर्मिनल 2 ) और नीचे दिए गए कमांड करता हूं।
cd /tmp/tmp.7KtrAsd9lx
ls - lFa
आउटपुट नीचे है।
ls -lFa
total 8
drwx------ 2 root root 4096 Sep 3 22:22 ./
drwxrwxrwt. 16 root root 4096 Sep 3 22:22 ../
फ़ाइलों hello
और helloagain
दिखाई नहीं देते हैं और मैं भी इन फ़ाइलों की जाँच करने के रूट के रूप में लॉग इन हैं। तो लाभ यह है, यह सुविधा हमारे लिए एक निजी अस्थायी फाइल सिस्टम बनाने के लिए संभव बनाती है जो कि अन्य रूट-स्वामित्व वाली प्रक्रियाओं को देख या ब्राउज़ नहीं कर सकता है।
मैन ऑफ द पृष्ठ से unshare
,
माउंट नेमस्पेस माउंटिंग और अनमाउंटिंग फाइल सिस्टम सिस्टम के बाकी सिस्टम (CLONE_NEWNS फ्लैग) को प्रभावित नहीं करेंगे, सिवाय उन फाइल सिस्टम के जिन्हें स्पष्ट रूप से साझा किया गया है (माउंट -मेक-शेयर्ड के साथ; साझा किए गए फ्लैग के लिए सेल्फ / माउंटिनफो)।
यह सुनिश्चित करने की अनुशंसा की जाती है कि माउंट --make-rpStreet या माउंट --make-rslave को unshare --mount के बाद सुनिश्चित करें कि नए नामस्थान में माउंटपॉइंट वास्तव में पैतृक नाम स्थान से अनसेक्ड हैं।
नामस्थान के लिए उपयोग की जा रही मेमोरी VFS है जो कर्नेल से है। और - अगर हम इसे पहली बार में सेट करते हैं - हम पूरे वर्चुअल वातावरण बना सकते हैं जिसमें हम रूट उपयोगकर्ता हैं बिना रूट अनुमति के।
संदर्भ:
इस ब्लॉग पोस्ट के विवरण का उपयोग करके उदाहरण तैयार किया गया है । साथ ही, इस उत्तर के उद्धरण माइक के इस अद्भुत विवरण से हैं । इस बारे में एक और अद्भुत पढ़ने के जवाब यहां से मिल सकते हैं ।