Existe um comando para mudar para um namespace existente?

4

Estou usando vários namespaces UTS, cada um deles tem alguns servidores em execução constantemente.

Eu posso obter os IDs de namespace via readlink /proc/<pid>/ns/uts , agora eu gostaria de mudar para um determinado namespace para fazer modificações lá.

Tanto quanto eu entendo de man 2 setns , deve ser possível fazer isso usando a chamada do sistema setns() . Existe até mesmo um programa de exemplo que poderia fazer o que eu estou procurando, mas eu esperava que já houvesse alguma utilidade que a maioria distribuições incluem o que pode fazer o mesmo trabalho.

O comando unshare parece não funcionar para mim porque cria apenas novos namespaces para ativar processos, mas não permite especificar um namespace existente.

    
por replay 30.12.2013 / 12:36

1 resposta

3

Em 11 de janeiro de 2013, o utilitário nsenter foi adicionado ao pacote util-linux . Este é o compromisso junto com seu comentário:

commit f8aa8e9495dd89f39b7d0db5aab431cac02ea519
Author: Eric W. Biederman <[email protected]>
Date:   Fri Jan 11 14:46:38 2013 -0800

nsenter: new command (light wrapper around setns)

Inspired by unshare, nsenter is a simple wrapper around setns that
allows running a new process in the context of an existing process.

Full paths may be specified to the namespace arguments so that
namespace file descriptors may be used wherever they reside in the
filesystem.

Signed-off-by: "Eric W. Biederman" <[email protected]>

A primeira versão de util-linux que inclui nsenter é 2.23 lançado em abril de 2013.

Infelizmente, a maioria das distribuições ainda está usando versões anteriores de util-linux , que ainda não incluem esse utilitário.

    
por 30.12.2013 / 18:22