Назад | Перейти на главную страницу

Запретить использование хост-консолей / tty в контейнер lxc

Я запускаю Ubuntu 12.04.5 LTS (пакет lxc 0.7.5-3ubuntu69) с одним гостем lxc. Все работает нормально, за исключением того, что контейнер lxc, похоже, использует / беспорядок с хост-устройствами tty.

Как только контейнер запущен, я больше не могу войти на хост, используя его консоли, потому что после ввода имени пользователя он всегда показывает мне «Невозможно определить ваше имя tty». а потом просто зависает. Системный журнал на хосте медленно заполняется сообщениями «init: tty1 main process (17911) terminated with status 1» и «init: tty1 main process completed, respawning».

Есть ли способ запретить lxc доступ к хостам, консолям / ttys? Есть ли способ исправить хост без перезагрузки?

Вот моя текущая конфигурация контейнера lxc:

lxc.utsname = guest1
lxc.rootfs = /var/lib/lxc/guest1/rootfs

lxc.devttydir = lxc
lxc.tty = 4
lxc.pts = 1024
lxc.mount  = /var/lib/lxc/guest1/fstab
lxc.arch = amd64
lxc.cap.drop = sys_module mac_admin mac_override
lxc.pivotdir = lxc_putold

# Interface for public network
lxc.network.type=veth
lxc.network.link=br0
lxc.network.flags=up
lxc.network.hwaddr = 00:16:3e:d6:01:04

# Interface for private network
lxc.network.type=veth
lxc.network.link=br1
lxc.network.flags=up
lxc.network.hwaddr = 00:16:3e:d6:01:05

# Deny access to all devices by default
lxc.cgroup.devices.deny = a

# Allow any mknod (but not using the node)
lxc.cgroup.devices.allow = c *:* m
lxc.cgroup.devices.allow = b *:* m

# /dev/null and /dev/zero
lxc.cgroup.devices.allow = c 1:3 rwm
lxc.cgroup.devices.allow = c 1:5 rwm

# /dev/full
lxc.cgroup.devices.allow = c 1:7 rwm

# consoles
#lxc.cgroup.devices.allow = c 5:1 rwm
#lxc.cgroup.devices.allow = c 5:0 rwm
#lxc.cgroup.devices.allow = c 4:0 rwm
#lxc.cgroup.devices.allow = c 4:1 rwm

# /dev/{,u}random
lxc.cgroup.devices.allow = c 1:9 rwm
lxc.cgroup.devices.allow = c 1:8 rwm
lxc.cgroup.devices.allow = c 136:* rwm
lxc.cgroup.devices.allow = c 5:2 rwm

# rtc
lxc.cgroup.devices.allow = c 254:0 rwm

# fuse
#lxc.cgroup.devices.allow = c 10:229 rwm

# tun
#lxc.cgroup.devices.allow = c 10:200 rwm

# hpet
lxc.cgroup.devices.allow = c 10:228 rwm

# kvm
#lxc.cgroup.devices.allow = c 10:232 rwm

Кажется, решением для возврата TTY хостов было удалить существующие устройства / dev / tty [1-4] на хосте и воссоздать их с помощью mknod.

Я еще не проверял, ломает ли lxc их снова после перезапуска контейнера, но, по крайней мере, это исправляет.

Попробуйте эту опцию как часть конфигурации

     lxc.devttydir = lxc

Это создаст каталог rootfs / dev / lxc для tty1 и консоль для конкретного контейнера; В этом случае tty1 - это следующий свободно доступный терминал, который может использоваться контейнером;