Uid / GID contêiner LXC privilegiado: systemd lxc-start falhou no ubuntu 16.04

3

Eu gostaria de criar & inicie o contêiner LXC para UID específico & GID para o propósito abaixo.

Entre para o usuário root (sudo user), faça lxc-create de container, então faça lxc-start do container com o mesmo id de usuário root. enquanto olhando container eu preciso iniciar todo o processo dentro do container com id de usuário de privilégio baixo (un-priv) no qual o acesso ao usuário é restrito a container e não ao host.basically quando digo ps -axu, eu deveria ser capaz de ver o ID do usuário de baixo privilégio para todo o processo do contêiner.

PS: meu host que é VM com o Ubuntu 16.04 LTS é o sistema init systemd e meu contêiner (tipo busybox) será iniciado com os serviços systemd. para isso eu modifiquei o template do busybox como abaixo Código:

lxc.init_cmd=/lib/systemd/systemd

e também removeu todos os rcS & scripts relacionados ao inittab no modelo padrão do busybox

e para o mapa de identificação do usuário, mudei como abaixo no meu modelo Código:

   lxc.id_map=u 0 165536 65536
   lxc.id_map=g 0 165536 65536

depois disso eu apenas segui os passos abaixo

Contêiner criado normalmente com abaixo de comenda (e eu cruzei o arquivo de configuração verificado em / var / lib / lxc / testecho_uid / config para ter certeza de que todas as alterações no meu modelo são refletidas ou não, ok) Código:

sudo lxc-create -n testecho_uid -t busybox_systemd_uid

Inserido abaixo do comando para iniciar o contêiner com o primeiro plano Código:

sudo lxc-start -n testecho_uid -F

O erro é:

vijay@vijay-VirtualBox:~$ sudo lxc-start -n testecho_uid -F
lxc-start: cgfsng.c: cgfsng_create: 1072 No such file or directory - Failed to create /sys/fs/cgroup/systemd//lxc/testecho_uid: No such file or directory
                                         lxc-start: cgfsng.c: cgfsng_create: 1072 No such file or directory - Failed to create /sys/fs/cgroup/systemd//lxc/testecho_uid-1: No such file or directory
                                                                                    newuidmap: uid range [0-65536) -> [165536-231072) not allowed
                                 lxc-start: start.c: lxc_spawn: 1161 failed to set up id mapping
                                                                                                lxc-start: start.c: __lxc_start: 1353 failed to spawn 'testecho_uid'
                                                    newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/systemd//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/perf_event//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/hugetlb//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/cpu//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/memory//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/pids//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/blkio//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/cpuset//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/net_cls//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/devices//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/freezer//lxc/testecho_uid-2
lxc-start: lxc_start.c: main: 344 The container failed to start.
lxc-start: lxc_start.c: main: 348 Additional information can be obtained by setting the --logfile and --logpriority options.

Alguém pode me dizer se estou sentindo falta de alguma coisa aqui?

abaixo estão minhas configurações do ubuntu 16.04 para uid & gid Código:

vijay@vijay-VirtualBox:~$ sudo cat  /etc/subgid
vijay:100000:65536
usrlxc:165536:65536
vijay:165536:65537

Código:

vijay@vijay-VirtualBox:~$ sudo cat  /etc/subuid
vijay:100000:65536
usrlxc:165536:65536
vijay:165536:65537

se acima da minha pergunta não estiver clara, por favor veja abaixo mais uma pergunta semelhante ao mesmo cenário. Existe uma maneira de acessar (lxc start & attach) contêiner sem privilégios do usuário root ou do usuário sudo. Ou seja, eu criei, iniciei e conectei o contêiner un-priv usando o usuário lxc (não o usuário sudo / usuário root) pelo login no usuário lxc sem qualquer problema. Agora eu gostaria de começar & Anexe o contêiner un-priv criado pelo usuário lxc do usuário root ou do usuário sudo.

Isso é possível? se sim por favor deixe-me saber como fazer isso? Eu verifiquei o lxc-ls do usuário sudo / root e ele listou apenas os contêineres criados pelo usuário sudo e não exibe o contêiner criado pelo usuário lxc.

ou

Todos os processos / threads do container Privilege podem ser executados / executados para um UID específico (por exemplo: usuário lxc) pelo usuário root / sudo ao fazer o lxc-start ou por qualquer meio? Eu também tentei dar abaixo lxc user uid & gid in config (mudando o template do busybox). deu acima erro de comentário. Código:  lxc.id_map = u 0 165536 65536   lxc.id_map = g 0 165536 65536 Eu tentei de todas as formas possíveis, mas sem sorte, por favor me eduque este tópico.

Abaixo estão os detalhes do usuário no meu desktop ubuntu usuário lxc - > "usrlxc" que eu criei como parte da experiência de criação de contêiner un-priv. Usuário Sudo - > "vijay" - este é um usuário sudo no meu Ubuntu 16.04 Virtual box machine. usuário root - > # que todos vocês sabem Por favor, deixe-me saber se alguma informação da minha configuração do Ubuntu ou lxc config

    
por vijayaragavalu 24.08.2016 / 11:59

1 resposta

0

Eu não encontro nenhuma opção para mapear o UID / GIP para o container privilegiado, com o que eu experimentei até o LXC. A partir disso, posso entender que o mapeamento de UID / GID pode ser feito apenas para o container não-priv. Corrija-me se estiver errado. De outra forma, não podemos acessar o container un-priv do usuário root (ou usuário sudo), ou seja, se o fizermos sudo lxc-ls, ele listará apenas o container root / sudo user created e não exibirá o container un-priv criado pelo usuário com poucos privilégios (usrlxc no meu caso). Portanto, não podemos fazer o lxc-start / anexar o container un-priv do usuário root / sudo.

Então, estou tentando gerenciar usando arquivos de serviço systemD para alcançar.não totalmente concluído ainda. Eu poderia fazer lxc-create / stop. mas enfrentando problema para fazer lxc-start do serviço systemD para usuário específico que pode ser tratado em breve. por favor, alguém me avise se você tiver uma solução melhor para iniciar o contêiner un-priv a partir do login root / sudo que não seja o método de serviço systemD.

    
por 29.08.2016 / 10:15

Tags