Voltar à lista
Linux x86_64Namespaces#272

unshare

Desassocia partes do contexto de execução da thread chamadora, movendo-a para novos namespaces.

Descrição

Cria novas cópias (não compartilhadas com o processo pai) de um ou mais tipos de namespace — mount, UTS, IPC, rede, PID, usuário, cgroup — para a thread chamadora, sem precisar criar um processo filho como `clone` faria. É a base de ferramentas de containerização como `unshare(1)` e parte da implementação de runtimes de container.

Header: sched.hman 2Desde o kernel 2.6.16

Nota

CLONE_NEWPID afeta apenas os filhos criados depois da chamada — a própria thread chamadora não muda de namespace de PID.

Nota

CLONE_NEWUSER sem privilégio é o mecanismo central por trás de containers/sandboxes 'rootless'.

Assinatura

int unshare(int flags);

Parâmetros

ParâmetroTipoDescrição
flagsintMáscara de bits com os namespaces a desassociar: CLONE_NEWNS, CLONE_NEWCGROUP, CLONE_NEWUTS, CLONE_NEWIPC, CLONE_NEWUSER, CLONE_NEWPID, CLONE_NEWNET, entre outros CLONE_* relacionados a namespaces.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1flagsint

Valor de retorno

0 em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EINVAL(22)
Argumento inválido.
ENOMEM(12)
Memória insuficiente para completar a operação.
EPERM(1)
Operação não permitida (falta de privilégio).
ENOSPC(28)
Sem espaço livre no dispositivo.
EUSERS(87)
Excesso de usuários.

Relacionadas

Mesma categoria