অনিবদ্ধ এলএক্সসি পাত্রে কীভাবে / ডিভ / টিউন ডিভাইস তৈরি করবেন?


10

এই প্রশ্নটি ওপেনভিপিএন-এর জন্য lxc অতিথির কোনও সুরের ডিভাইসের অনুরূপ । এলএক্সসি বিকশিত হয়েছে এবং সম্প্রতি অবিকল্পিত এলএক্সসি পাত্রে প্রবর্তন করা হয়েছিল যা জেল ভাঙার বিরুদ্ধে সুরক্ষার জন্য আরও একটি স্তর সরবরাহ করে।

অনিবন্ধিত কনটেইনারগুলির মধ্যে একটিতে আমার একটি ওপেনভিপিএন সার্ভার তৈরি করতে হবে। আমি জানি না কীভাবে ধারকটি একটি ব্যক্তিগত সুরের নেটওয়ার্ক ডিভাইস তৈরি করতে দেয়।

আমি পরিশেষে যোগ করেনি lxc.cgroup.devices.allow = c 10:200 rwmথেকে ~/.local/share/lxc/mylxc/config

ধারকটি শুরু করার পরে, mknod /dev/net/tun c 10 200ধারকটির mknod: '/dev/net/tun': Operation not permittedভিতরে ফিরে আসে ।

আমি হোস্ট হিসাবে ভ্যানিলা উবুন্টু 14.04 64 বিট এবং এর সাথে তৈরি একটি ধারক ব্যবহার করি

lxc-create -t download -n mylxc  -- -d ubuntu -r trusty -a amd64

কেউ কি /dev/tunঅনিবদ্ধ এলএক্সসির অধীনে ডিভাইসটি চালিত করতে পরিচালিত হয়েছে ?


তথ্যের জন্য, একটি অনিবদ্ধ এলএক্সসি পাত্রে ওপেনভিএনপিএন কাজ করতে, আমাকে lxc.mount.entry = /dev/net/tun dev/net/tun none bind,create=fileএখানে বর্ণিত কন্টেইনার কনফিগারেশনের ফাইলটিতে যুক্ত করতে হয়েছিল: superuser.com/a/1205662/130915 তারপরে, আমি ধারকটির ভিতরে সুডো সহ ওপেনটিভিএনপি চালিয়েছি।
২৩

উত্তর:


3

আপনি স্পষ্টভাবে CAP_MKNOD যোগ করতে হবে সামর্থ্য আপনার টু ধারক

  lxc.cap.keep
          Specify the capability to be kept in the container. All other
          capabilities will be dropped. When a special value of "none"
          is encountered, lxc will clear any keep capabilities specified
          up to this point. A value of "none" alone can be used to drop
          all capabilities.

আপনি systemdএটি ব্যবহার করে (যদি আপনি ধারকটির অভ্যন্তরে ব্যবহারের ঘটনা ঘটেন) স্বয়ংক্রিয় করার চেষ্টাও করতে পারেন :

  lxc.hook.autodev
          A hook to be run in the container's namespace after mounting
          has been done and after any mount hooks have run, but before
          the pivot_root, if lxc.autodev == 1.  The purpose of this hook
          is to assist in populating the /dev directory of the container
          when using the autodev option for systemd based containers.
          The container's /dev directory is relative to the
          ${LXC_ROOTFS_MOUNT} environment variable available when the
          hook is run.

যা চলমান স্ক্রিপ্টকে নির্দেশ করতে পারে mknod

এটি ব্যবহার dockerকরা খুব সহজসাধ্য। ডিফল্টরূপে, ধারকগুলি অনিবদ্ধ

এই উদাহরণে, আমি trustyরেজিস্ট্রি থেকে একটি ধারক টানছি :

sudo -r sysadm_r docker pull corbinu/docker-trusty
Pulling repository corbinu/docker-trusty
...
Status: Downloaded newer image for corbinu/docker-trusty:latest

এবং আমি এটি ইন্টারেক্টিভ মোডে শুরু করছি আমার ভিতরে থাকা সক্ষমতা সম্পর্কে অবহিত করে:

sudo -r sysadm_r docker run --cap-drop ALL --cap-add MKNOD \
  -i -t corbinu/docker-trusty bash
root@46bbb43095ec:/# ls /dev/
console  fd/      full     fuse     kcore    mqueue/  null     ptmx     pts/     random   shm/     stderr   stdin    stdout   tty      urandom  zero
root@46bbb43095ec:/# mkdir /dev/net
root@46bbb43095ec:/# mknod /dev/net/tun c 10 200
root@46bbb43095ec:/# ls -lrt /dev/net/tun
crw-r--r--. 1 root root 10, 200 Apr  6 16:52 /dev/net/tun

উল্টোদিকে:

sudo -r sysadm_r docker run --cap-drop ALL \
  -i -t corbinu/docker-trusty bash
root@9a4cdc75a5ec:/# mkdir /dev/net
root@9a4cdc75a5ec:/# mknod /dev/net/tun c 10 200
mknod: ‘/dev/net/tun’: Operation not permitted

1
আমি বিশ্বাস করি, ডোকার যাকে "অপ্রতিযুক্ত" বলে, এটি এলএক্সসি পার্লেন্সের অর্থের থেকে অনেকটা আলাদা: github.com/docker/docker/issues/7906 । দেখে মনে হয় যে ডকার এখনও অনিবদ্ধ পাত্রে সমর্থন করে না। এটি অগত্যা আপনার উত্তরটি অকার্যকর করে না - আমি CAP_MKNODকাজের পরে চেক করব ।
অ্যাডাম রাইজকোভস্কি

1
আপনি কি দয়া করে অবাঞ্ছিত ধারকটির ক্ষমতা পরিবর্তন করতে দয়া করে আমাকে একটি সামান্য নির্দেশক দিতে পারেন? গুগলে কমপক্ষে একটি সঠিক বাক্যাংশ?
অ্যাডাম রাইজকোভস্কি

3
কনফিগারটিতে যুক্ত করা lxc.cap.keep = CAP_MKNODত্রুটি করে Simultaneously requested dropping and keeping caps। আমি সব যাও recursively যোগ configs চেক করা ( ubuntu.userns.conf, ubuntu.common.confএবং common.conf) এবং একমাত্র এক লাইন পাওয়া lxc.cap.drop: lxc.cap.drop = mac_admin mac_override sys_time sys_module। তবে সেটা কি অপ্রাসঙ্গিক নয়?
অ্যাডাম রাইজকোভস্কি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.