Estou tentando entender os namespaces do Linux e estou bloqueado em um caso de uso específico. O que eu tento fazer é alterar a propriedade de um arquivo que foi criado com privilégio de root antes de criar o namespace, usando o recurso de mapeamento raiz de namespaces.
Aqui está um exemplo, do ambiente do CentOS 7 (kernel 3.10.0-693.5.2.el7.x86_64)
Eu crio um arquivo como root em um namespace de usuário:
unshare --user --map-root-user --propagation shared --uts --ipc --net --pid --fork touch /tmp/test
então tento alterar a propriedade desse arquivo:
unshare --user --map-root-user --propagation shared --uts --ipc --net --pid --fork chown root:mail /tmp/test
e recebo o seguinte erro:
chown: changing ownership of ‘/tmp/test ’: Invalid argument
Se eu fizer a mesma manipulação de arquivos do mesmo namespace de usuário, isso estará funcionando corretamente:
unshare --user --map-root-user --propagation shared --uts --ipc --net --pid --fork touch /tmp/test ;chown root:mail /tmp/test
Com a opção que dou ao comando unshare
, sou root dentro do espaço de nomes e o id de mapeamento 0 a 0:
unshare --user --map-root-user --propagation shared --uts --ipc --net --pid --fork cat /proc/$$/uid_map
0 0 4294967295
Então, o que eu não entendo é por que meu chown não está funcionando no primeiro caso?
Tags namespace