Reinsira o namespace do PID 1

4

Estou tentando entrar no namespace PID com o processo em que o PID 1 está em um processo clonado com CLONE_NEWPID . Eu continuo recebendo Invalid argument error.

Em outras palavras, clonei um processo filho com clone() e CLONE_NEWPID flag. Depois disso no processo filho eu abro /proc/1/ns/pid para leitura e tento executar setns() com o descritor aberto acima. setns() falha com Invalid argument .

Código completo do programa: link

É algum mecanismo (de segurança?) que impede a entrada do namespace do PID 1 ou do namespace do pai. Eu sei que há um para o espaço de nomes do usuário, mas o que acontece com o PID?

    
por HUB 25.03.2015 / 10:51

1 resposta

5

Este é um recurso de segurança, descrito na página do namespace do PID .

While processes may freely descend into child PID namespaces (e.g., using setns(2) with CLONE_NEWPID), they may not move in the other direction. That is to say, processes may not enter any ancestor namespaces (parent, grandparent, etc.). Changing PID namespaces is a one way operation.

    
por 25.03.2015 / 11:00