প্রশ্ন অননুমোদিত পাত্রে মাউন্ট ZFS ডেটাসেট


প্রথম আমার কনফিগারেশন সম্পর্কে তথ্য বিট:

  • উবুন্টু 15.10
  • ZFS পুল তৈরি
  • পুল / lxc মধ্যে সংরক্ষিত LXC পাত্রে
  • ডেটাসেট তৈরি pool/mydataset মালিক user1

ফাইল / ফোল্ডারগুলি অ্যাক্সেস করার জন্য এখন আমার কন্টেইনারগুলির একটি দরকার pool/mydataset। আমি নিম্নলিখিত চেষ্টা:

  • একটি ব্যবহারকারী তৈরি করেছেন user1 পাত্রে ভিতরে
  • সম্পাদিত pool/lxc/mycontainer/config এবং যোগ করেছেন:

    lxc.mount.entry = /pool/mydataset mnt/mydataset none rw,bind 0 0
    

যখন আমি কন্টেইনার শুরু করি তখন ডেটাসেটটি মাউন্ট করা হয় তবে ls -la /mnt/mydataset পাত্রে শো nobody:nogroup পরিবর্তে user1:user1, যা সব ফাইল শুধুমাত্র-পড়া হয় মানে।

মাউন্ট করা ডিরেক্টরির মধ্যে সঠিক অনুমতি পেতে কিভাবে কোন ধারণা?


4
2018-02-15 22:41


উত্স




উত্তর:


যদি সত্যিই mycontainer অননুমোদিত, তারপর তার মালিক পথ অ্যাক্সেস করতে পারে না /pool/mydataset। অননুমোদিত কন্টেইনারে থাকা ব্যবহারকারীদের হোস্টে কন্টেইনার-মালিক ইউআইডির দ্বারা আপনার ইউআইডি অফসেট থাকে user1 কন্টেইনার ভিতরে একই নয় user1 হোস্টে।

  1. আপনি হোস্টে কোন ব্যবহারকারীর সাথে ধারক মালিক তা পরীক্ষা করতে পারেন sudo ls -l /pool/lxc | grep mycontainer (sudo উপর নির্ভর করে, প্রয়োজন হতে পারে না /pool/lxcএর অনুমতি, কিন্তু ls রুট উভয় উপায় হিসাবে চালানোর জন্য যথেষ্ট নিরাপদ হওয়া উচিত। এগিয়ে যাওয়া, বাদ দেওয়া sudo যেখানে অনুমতি সম্ভব যে যদি ইচ্ছাজনক)। উদাহরণস্বরূপ, আমি পেতে

    drwxr-xr-x 4 100000 100000    5 Apr 22 11:37 mycontainer
    

    দেখানো হয়েছে যে কন্টেইনারের মালিকের uid এবং gid 100000 (ব্যবহারকারীর নাম হোস্টে থাকা নেই এমন একটি নাম পরিবর্তে আমরা একটি ইউআইডি দেখি)।

  2. পরীক্ষা /pool/mydatasetএর সাথে অনুমতি sudo ls -l /pool | grep mydataset (অথবা sudo ls -l /pool/mydataset তার বিষয়বস্তু জন্য)।

    যদি আপনি কন্টেইনারের মধ্যে ফাইলগুলি লেখার যোগ্য হতে চান, তবে আপনাকে অবশ্যই নিশ্চিত করতে হবে যে কোনও ব্যবহারকারী ভিতরেই রয়েছে mycontainer আপনি লিখতে সক্ষম হতে চান /pool/mydataset হোস্টে তাই করার অনুমতি আছে। উদাঃ, root উপর mycontainer হোস্টে 100000 ইউডি আছে, এবং যদি user1 মধ্যে mycontainer আপনি 1001 (পরীক্ষা সঙ্গে id user1  ধারক মধ্যে থেকে) তারপর হোস্টে তার ইউআইড 101001 হবে।


আপনি হোস্ট সবাই লিখতে অনুমতি দিয়ে যে করতে পারে /pool/mydataset সঙ্গে

sudo chmod -R o+w /pool/mydataset

(নোট: এই ভিতরে recursively অনুমতি যোগ করা হবে /pool/mydataset), অথবা সম্ভবত গ্রুপ ব্যবহারকারীদের নিশ্চিত করতে ভাল user1 লেখার অনুমতি আছে (সঙ্গে recursively সেট করুন sudo chmod -R g+w /pool/mydataset যদি না হয়), তারপরে গ্রুপের ধারকটির মালিক যোগ করুন user1 সঙ্গে

sudo usermod -a -G user1 <username>

(উপরে আমার ক্ষেত্রে, আমরা দেখেছি যে হোস্টের কোনও ব্যবহারকারী কনটেইনারের মালিক নন, তাই আমাদের প্রথমে ইউআইডি এবং 100000 জিড সহ ব্যবহারকারী তৈরি করতে হবে

adduser --no-create-home --uid 100000 --disabled-password --disabled-login <username>

অবশ্যই, আপনি শুধুমাত্র অনুমতি দিতে চান user1 কন্টেইনার ভিতরে, তাই এর সাথে একটি ব্যবহারকারী তৈরি করুন নিমন্ত্রণকর্তা uid এবং গ্রুপ যে যোগ করুন user1 হোস্টে, উদাহরণস্বরূপ, 101001.)

আপনি পারমাণবিক যান এবং মালিকানা দিতে পারেন /pool/mydataset থেকে mycontainerএর root এর সাথে

sudo chown -R 100000:100000 /pool/mydataset

কিন্তু যে তথ্য অ্যাক্সেস হোস্ট অন্যান্য ব্যবহারকারীদের সঙ্গে জগাখিচুড়ি হতে পারে।


একবার আপনি এটি সম্পন্ন করলে, আপনি যে মাউন্ট সেট করেছেন তার মধ্যে লিখার অনুমতিগুলি অনুমতি দেওয়া উচিত mycontaier, পছন্দসই হিসাবে।


4
2018-05-15 19:14