Como identificar quais recursos são necessários para um comando?

4

Quando executo um comando em um contêiner docker, vejo:

# ip netns exec 9ee961d90990 ifconfig
setting the network namespace "9ee961d90990" failed: Operation not permitted

Posso iniciar meu contêiner com recursos expandidos diretamente (adicionei o net_admin one), mas existe alguma maneira de verificar qual recurso do sistema é necessário para executar este comando?

É possível iniciar o contêiner com --privileged para fazer isso e atropelar tudo relacionado à segurança associada ao docker, mas prefiro evitar fazer isso sempre que possível. Isso permite que o comando acima tenha sucesso.

    
por enderland 28.06.2016 / 00:49

1 resposta

0

De acordo com a página man do setns (2) , você precisará de CAP_ADMIN para entrar no namespace de rede de destino. Mas você provavelmente precisará de recursos adicionais porque setns() é usado com um descritor de arquivo para /run/netns/... . Você não diz como criou este namespace de rede, então eu suponho que ele tenha sido criado através de ip netns add ... , então é um namespace de rede montado em bind apontando para nsfs de qualquer maneira. Como /run/netns/... é geralmente território-raiz, você provavelmente precisará de CAP_DAC_OVERRIDE ou CAP_DAC_READ_SEARCH , veja também página do manual capabilities (7) .

    
por 26.06.2018 / 20:18