Qual é a diferença entre / etc / group e / etc / subgid?

2

Estou em um contexto do Docker e estou usando namespaces de usuário para mapear o usuário do meu contêiner para o usuário do meu host (digamos foo). Como eu uso o portainer (como um container), eu preciso ligar o soquete do Docker.

$ll /var/run/docker.sock                                                                                                                                                 
srw-rw---- 1 root docker 0 nov.  14 11:47 /var/run/docker.sock

$sudo cat /etc/docker/daemon.json
{
  "userns-remap": "foo"
}

$id
uid=1000(foo) gid=1000(foo) groupes=1000(foo),999(docker)

$getent group docker
docker:x:999:foo

Mesmo que meu usuário foo tenha permissão para acessar os arquivos do grupo de estivadores e o Docker esteja usando meu usuário foo para executar processos docker, meu portainer não tem permissão para acessar o soquete.

Agora, se eu adicionar esta linha ao / etc / subgid, meu problema está resolvido:

foo:999:1

Meu entendimento desta linha é: foo user tem permissão para acessar o primeiro grupo com gid a partir de 999, que é 999 (999 + 0). Meu usuário foo tem permissão para acessar o 999 gid, que é o grupo docker.

Como eu posso ver, há uma diferença entre:

$getent group docker
docker:x:999:foo

e

grep 999 /etc/subgid
foo:999:1

Minha pergunta: Qual é a diferença entre essas duas configurações e por que preciso da configuração do subgid para permitir que meu contêiner acesse meu soquete do Docker?

Obrigado!

    
por user2409548 14.11.2017 / 15:34

0 respostas