Как создать/dev/tun устройство в непривилегированном контейнере LXC?

Этот вопрос не подобен Никакому устройству бочки в lxc госте для openvpn. LXC развился, и непривилегированные контейнеры LXC были недавно представлены, которые предлагают другой уровень безопасности против повреждения тюрьмы.

Я должен создать сервер OpenVPN в одном из непривилегированного контейнера. Я не знаю, как позволить контейнеру создать частное сетевое устройство бочки.

Я действительно добавлял 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 в контейнере.

Я использую ванильную Ubuntu 14.04 64bit в качестве хоста и контейнера, созданного с

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

Сделал любого, сумел добраться /dev/tun устройство, работающее под непривилегированным LXC?

10
задан 13 April 2017 в 15:14
1 ответ

Udinga ukufaka ngokusobala amandla we-CAP_MKNOD esitsheni sakho esingu- .

  lxc.cap.keep
  Cacisa amandla okufanele agcinwe esitsheni.  Konke okunye
  amakhono azokwehliswa.  Lapho inani elikhethekile elithi "none"
  ihlangatsheziwe, i-lxc izosula noma imaphi amandla wokugcina acacisiwe
  kuze kube manje.  Inani elithi "none" lilodwa lingasetshenziswa ukudonsa
  wonke amakhono.
 

Ungazama futhi ukushintsha lokhu (uma kungenzeka usebenzise systemd ngaphakathi kwesitsha) usebenzisa:

  lxc.hook.autodev
  Ingwegwe ezosebenziswa endaweni yegama lesitsha ngemuva kokukhweza
  kwenziwe futhi ngemuva kokuthi noma yiziphi izingwegwe zokugijima zisebenzile, kodwa ngaphambili
  i-pivot_root, uma i-lxc.autodev == 1. Inhloso yale hook
  ukusiza ekugcwaliseni umkhombandlela we-dev wesitsha
  lapho usebenzisa inketho ye-autodev yeziqukathi ezisuselwe kusistimu.
  Umkhombandlela wesiqukathi / dev uhlobene ne-
  $ {LXC_ROOTFS_MOUNT} ukuguquguquka kwemvelo kutholakala lapho ifayela le-
  ingwegwe iyenziwa.
 

engakhomba iskripthi esisebenzisa mknod .

Usebenzisa docker lokhu kulula kakhulu ukukufeza. Ngokuzenzakalelayo, iziqukathi azinayo .

Kulesi sibonelo, ngidonsa trusty isitsha kusuka kwirejista:

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

Futhi ngikuqala ngemodi yokusebenzisana ekwaziseni mayelana namandla engiwadingayo ngaphakathi:

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

Ngokuphikisana no:

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
3
ответ дан 2 December 2019 в 22:14

Теги

Похожие вопросы