Habilitar namespaces de usuário no kernel Debian

28

Estou tentando descobrir como habilitar a capacidade de espaços para nome de usuário no meu kernel (acho que CAP_SYS_USER_NS). Estou usando o Debian Stretch, kernel 4.6.0-1-amd64.

Meu pressuposto é que existe uma maneira de ativar os espaços de nome de usuário e recompilar o kernel. Após algumas horas pesquisando, posso encontrar uma postagem sobre isso no Ubuntu ( https://blog.tutum.co/2013/12/14/enabled-the-user-namespace-in-ubuntu-13-10-saucy/ ), mas não o Debian (o problema pode estar no caminho errado e, portanto, minhas pesquisas estão fora da base).

Meu jogo final é habilitá-los para acompanhar o Docker e o sandboxing do Google, que aparentemente exigem que os namespaces de usuário sejam ativados no kernel (por exemplo, meus contêineres do Chrome não funcionam mais).

Senrabdet
fonte
11
Veja também a mesma pergunta: unix.stackexchange.com/q/303213/4319
imz - Ivan Zakharyaschev

Respostas:

38

No Debian, os usuários são compilados, mas desativados por padrão. Há um patch específico do Debian no kernel que adiciona este botão sysctl: kernel.unprivileged_userns_clone

Então você deve adicionar uma nova entrada /etc/sysctl.de configurá-la para 1

Manualmente, isso seria: echo 1 > /proc/sys/kernel/unprivileged_userns_clone(apenas para habilitá-lo até a reinicialização)

para uma solução permanente:

echo 'kernel.unprivileged_userns_clone=1' > /etc/sysctl.d/00-local-userns.conf
service procps restart

É possível que exista um parâmetro de opção de inicialização equivalente, simplesmente não sei

AB
fonte
11
Isso ainda funciona no Stretch, kernel 4.9.0-1-amd64 #1 SMP Debian 4.9.6-3 (2017-01-28) x86_64 GNU/Linux.
Reid
11
Existe uma razão para estar desabilitado por padrão no Debian?
Melroy
2
Historicamente, a segurança do espaço para nome do usuário era incerta. por exemplo: lwn.net/Articles/673597 . Se um usuário, como raiz dentro de seu próprio espaço para nome, pode induzir o kernel a permitir uma operação no host real, há escalação de privilégios. Os namespaces comuns de não usuários requerem permissão explícita de raiz (portanto, admin) e, portanto, executam o que o administrador escolheu: esse é um risco conhecido. Um mecanismo posterior foi adicionado ao kernel da baunilha: user.max_user_namespaces. Quando definido como 0, os espaços para nome do usuário estão desativados. O patch do Debian (atualmente do Ubuntu) ainda está por aí, mesmo que provavelmente obsoleto. Talvez por motivos de compatibilidade
AB
11
O kernel 4.18.3 ainda não foi lançado no Debian, portanto seu kernel não é um kernel de teste do Debian. Você pode ignorar completamente esse parâmetro (até instalar um kernel real do Debian). Veja também o meu comentário anterior sobre user.max_user_namespaces
AB
3
Ou simplesmente: sudo sysctl -w kernel.unprivileged_userns_clone=1.
Skippy le Grand Gourou