cancelar o compartilhamento com grupos complementares

cancelar o compartilhamento com grupos complementares

Na minha máquina Linux, eu (meu usuário) tenho um grupo principal e vários outros grupos (observe que pertenço ao grupo 150):

$ id -u; id -g; id -G
1000
1000
1000 6 21 91 97 150 190 465 996 1003

Preciso isolar um comando em um namespace de usuário. Eu uso unshare --userpara isso:

$ unshare --user --map-user=4000 --map-group=4000 bash -c 'id -u; id -g; id -G'
4000
4000
4000 65534

(Observe que todos os grupos aos quais eu pertencia são mantidos, mas, como a maioria deles não está mapeada no novo namespace do usuário, eles são substituídos pelo grupo overflow, 65534, "nobody" ou "nogroup". Uma chamada para getgroupsconfirma isso por retornar a lista "1000 65534 65534 65534 65534 65534 65534 65534 65534 65534 iddesduplica essa lista.)

Não tenho permissão, como usuário, para mapear qualquer grupo, exceto o grupo efetivo no namespace pai (1000). Mas aqui, preciso usar um dos meus grupos suplementares para executar um executável com privilégios escalonados (observe que /usr/bin/dumpcapsó pode ser executado se alguém estiver no grupo 150, no qual estou no namespace externo):

$ ls -n /usr/bin/dumpcap
-rwxr-xr-- 1 0 150 116928 Jun  7 21:16 /usr/bin/dumpcap
$ getcap /usr/bin/dumpcap
/usr/bin/dumpcap cap_dac_override,cap_net_admin,cap_net_raw=eip

Existe uma maneira de fazer com que um grupo no namespace do usuário seja mapeado para um grupo suplementar ao qual pertenço no namespace pai (aqui 150)? —Sem CAP_SETGID, claro, seria muito fácil. ;-)

informação relacionada