Estou tentando entender se é possível mapear dois usuários de um namespace de usuário para dois usuários diferentes no host.
O objetivo é replicar as mesmas permissões que tenho no meu host dentro de uma rootfs
(base Ubuntu, porque estou tentando construir um contêiner do zero).
Por exemplo:
- Tudo abaixo
/
deve pertencer aroot
. /home/user
deve pertencer ao regularuser
.
Para conseguir isso, pensei em usar o mapeamento de UID em um namespace de usuário, algo como:
UID in user namespace ---> UID on host
1000 (admin) -> 0 (root)
1001 (bob) -> 1001 (bob)
Esse tipo de mapeamento é mesmo possível?
Aqui está o que eu já tentei:
- Executando
echo -e "1000 0 1\n1001 1001 1" > /proc/[PID]/uid_map
para definir o mapeamento, mas recebo um erro. - Tentando modificar manualmente
/proc/[PID]/uid_map
paranewuidmap
cada usuário.
No entanto, nunca consegui mapear mais de um usuário e não consigo mapear o UID 0 (root) de jeito nenhum.
Atualizar:
Li as páginas de manual e segui as restrições mencionadas ali, mas ainda estou recebendo mensagens de erro.
Por exemplo:
# terminal 1
unshare --user bash
echo $$ # 11591
# terminal 2 as user 'alex' (uid = 1000)
newuidmap 11591 0 0 1
# newuidmap: uid range [0-1) -> [0-1) not allowed
newuidmap 11591 1001 1001 1
# newuidmap: uid range [1001-1002) -> [1001-1002) not allowed
Esses comandos falham, mesmo quando executados com sudo
.
Também tentei mapear os subuids que declarei, mas ainda não funciona:
cat /etc/subuid
alex:100000:65536
root:200000:65536
self:300000:65536
cat /etc/subgid
alex:100000:65536
root:200000:65536
self:300000:65536