Eu acho que sua suposição está correta, eles são herdados do namespace pai. Isso parece semelhante a como os processos se clonam usando a chamada de sistema fork()
, então quaisquer alterações desejadas devem ser aplicadas pelo clone , usando as chamadas normais do sistema. (Incluindo a substituição do programa atual por um completamente diferente, usando exec()
. fork()
+ exec()
sendo como, por exemplo, o shell executa outros programas, embora essa mágica geralmente não seja visível para o usuário).
Nenhuma das opções da chamada de sistema unshare
subjacente altera isso. Então eu diria que a resposta para sua pergunta é não.
Ah ... isso nem foi uma analogia! Veja os flags das opções:
CLONE_NEWNET
(since Linux 2.6.24)This flag has the same effect as the
clone(2)
CLONE_NEWNET flag. Unshare the network namespace, so that the calling process is moved into a new network namespace which is not shared with any previously existing process. Use of CLONE_NEWNET requires the CAP_SYS_ADMIN capability.
clone()
basicamente significa fork()
.
Since version 2.3.3, rather than invoking the kernel's fork() system call, the glibc fork() wrapper that is provided as part of the NPTL threading implementation invokes clone(2) with flags that provide the same effect as the traditional system call. (A call to fork() is equivalent to a call to clone(2) specifying flags as just SIGCHLD.)