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

Libvirt lxc-enter-namespace с отображенным uid / gid

Я пытаюсь реализовать LXC с отображенным uid / gid (пространство имен пользователя) в Libvirt на CentOS 7 с полностью подключенным отдельным корнем. Фрагмент конфигурации libvirt

  <idmap>
    <uid start='0' target='100000' count='65535'/>
    <gid start='0' target='100000' count='65535'/>
  </idmap>
  <filesystem type='mount' accessmode='passthrough'>
    <source dir='/var/lib/libvirt/lxc/test2'/>
    <target dir='/'/>
  </filesystem>

Я сменил владельца файлов / каталогов внутри / var / lib / libvirt / lxc / test2, и сам контейнер работает нормально (просто тестовый контейнер со сценарием bash, поскольку / init запускает Apache и перехватывает SIGTERM, чтобы изящно остановить Apache). Если я сделаю ps aux Я вижу, что приложения-контейнеры работают под идентификатором пользователя 100000

100000    7392  0.0  0.0  12476  2212 pts/0    Ss+  Feb17   0:20 /bin/sh /init
100000    7409  0.0  0.0 230408  3684 ?        Ss   Feb17   0:15 /usr/sbin/httpd
100048    7411  0.0  0.0 230544  3796 ?        S    Feb17   0:00 /usr/sbin/httpd
100048    7412  0.0  0.0 230544  3800 ?        S    Feb17   0:00 /usr/sbin/httpd

и я могу видеть страницы Apache по умолчанию, так что все в порядке.

Теперь, когда я пытаюсь сделать virsh lxc-enter-namespace test2 /bin/bash Я запускаю bash под неизвестным uid / gid внутри контейнера

bash-4.2$ id
uid=65534 gid=65534 groups=65534

Я вижу, что он работает как настоящий root (uid / gid 0/0) в хост-системе. / proc / $ PID / uid_map такой же, как для процессов httpd, запущенных в контейнере.

[root@lxctest ~]# cat /proc/21219/uid_map <- bash
         0     100000      65535
[root@lxctest ~]# cat /proc/7413/uid_map <- apache
         0     100000      65535

Таким образом, сопоставление вроде работает, но libvirt (virsh) запускает процесс от имени неправильного пользователя. Пользователь 100000, конечно, не существует в хост-системе.

Так кто-нибудь знает, как подключиться (ввести пространство имен) как пользователь 100000 (корень контейнера)? Я что-нибудь упускаю?