প্রক্রিয়া প্রতি বেসরকারী ফাইল সিস্টেম মাউন্ট পয়েন্ট


24

আমি unshareকমান্ডটি পরীক্ষা করছিলাম এবং তার ম্যান পেজ অনুসারে,

   unshare - run program with some namespaces unshared from parent

আমি আরও দেখছি যে এখানে নামের এক ধরণের নাম স্থান রয়েছে,

 mount namespace
              mounting and unmounting filesystems will not affect rest of the system.

এই মাউন্ট নেমস্পেসের উদ্দেশ্যটি ঠিক কী ? আমি কিছু উদাহরণের সাহায্যে এই ধারণাটি বোঝার চেষ্টা করছি।



@ গিলস, ধন্যবাদ আমি এটি যাচাই করব. মাঝামাঝি সময়ে, দয়া করে উত্তরে অন্য কিছু যুক্ত করার প্রয়োজন আছে কিনা তা আমাকে জানান।
রমেশ

উত্তর:


29

রানিং unshare -mকলিং প্রক্রিয়াটিকে তার মাউন্ট নেমস্পেসের একটি ব্যক্তিগত অনুলিপি দেয় এবং ফাইল সিস্টেমের বৈশিষ্ট্যগুলিও ভাগ করে না দেয় যাতে এটি আর রুট ডিরেক্টরি, বর্তমান ডিরেক্টরি বা অন্য কোনও প্রক্রিয়ার সাথে উমাস্ক বৈশিষ্ট্যগুলি ভাগ করে না।

তাহলে উপরের অনুচ্ছেদটি কী বলে? আসুন একটি সাধারণ উদাহরণ ব্যবহার করে বোঝার চেষ্টা করি।

বন্দর 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 পতাকা) প্রভাবিত করবে না, স্পষ্টভাবে ভাগ করা হিসাবে চিহ্নিত (যেমন - মাউন্ট-শেয়ার্ড সহ; ভাগ করা ফ্ল্যাগগুলির জন্য / প্রোকে / স্ব / মাউন্টিনফো) দেখুন yste

নতুন নেমস্পেসের মাউন্টপয়েন্টগুলি প্যারেন্টাল নেমস্পেস থেকে সত্যই ভাগ করা যায় না তা নিশ্চিত করার জন্য আন-শেয়ার - মাউন্টের পরে মাউন্ট --make-rprivate বা মাউন্ট --make-rslave ব্যবহার করার পরামর্শ দেওয়া হয়।

নেমস্পেসের জন্য ব্যবহৃত মেমরিটি হ'ল ভিএফএস যা কার্নেল থেকে আসে। এবং - যদি আমরা এটি প্রথম স্থানে সেট আপ করি - আমরা সম্পূর্ণ ভার্চুয়াল পরিবেশ তৈরি করতে পারি যেখানে আমরা রুট অনুমতি ছাড়াই মূল ব্যবহারকারী।

তথ্যসূত্র:

উদাহরণটি এই ব্লগ পোস্টের বিবরণ ব্যবহার করে তৈরি করা হয়েছে । এছাড়াও, এই উত্তরের উদ্ধৃতিগুলি মাইকের এই দুর্দান্ত ব্যাখ্যা থেকে এসেছে । এ সম্পর্কিত আরও একটি দুর্দান্ত পঠন উত্তর থেকে পাওয়া যাবে


1
this feature makes it possible for us to create a private temporary filesystem that even other root-owned processes cannot see or browse through.আর তুলনায় chrootসঙ্গে chrootফাইল অন্যদের কাছে দৃশ্যমান। এটি আশ্চর্যজনক এবং সেই বাক্যটি সম্ভবত উত্তরের শীর্ষে হওয়া উচিত। + + 1ED।
সের্গেই কলডিয়াজনি

1
মূল থেকে বাঁচার কিছুই নেই! nsenterআপনি ব্যবহার করে নেমস্পেস প্রবেশ করতে পারেন এবং অস্থায়ী ফাইলগুলি দেখতে পারেন। কেবলমাত্র একটি ভাগ ভাগ করে নেওয়া (একমাত্র টেম্পডিরের মালিক) ধরে নেওয়া, তারপরে sudo nsenter -t $(pgrep -P $(ps aux | grep unshare | grep -v grep | awk '{print $2}')) -m -pবিষয়বস্তুগুলি দেখার অনুমতি দেবে
ইয়ার ক্যামাম

2

আপনি যদি আপনার সিস্টেমে বুদ্বুদ্বন্ধ ইনস্টল করেন তবে আপনি এটি এক ধাপে খুব সহজেই করতে পারেন:

bwrap --dev-bind / / --tmpfs /tmp bash

উপরের উদাহরণে, অভ্যন্তরীণ ব্যাশ / টেম্পিতে নিজের নিজস্ব দৃষ্টিভঙ্গি থাকবে।

সমাধান @ রমেশ-এর উত্তরে অনুপ্রাণিত - এর জন্য ধন্যবাদ!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.