Execute o initdb com o usuário tendo direitos de gravação, mas não o proprietário do diretório pgdata

2

Estou executando o initdb na imagem do Docker ( imagem oficial do Postgres ) no ambiente Openshift, com a configuração de segurança rígida política, esse usuário que executará o contêiner terá um UID aleatório, mas o GID será 0, portanto, posso afirmar que o processo tem todos os direitos necessários.

Eu testei meu contêiner com o usuário postgres com o GID alterado para 0 e tudo funcionou bem. O teste final com a política ANYUID fez com que a imagem falhasse:

initdb: could not change permissions of directory

o que é claro: o usuário tem direitos completos de gravação no diretório, mas não é proprietário nem root. No entanto, não vejo por que o initdb precisa alterar a propriedade do diretório, os direitos de gravação devem ser suficientes.

O initdb deve ser chamado após o início do contêiner porque o pgdata pode estar localizado no volume e a política anyuid faz a segurança geral do cluster, portanto, não quero desabilitá-lo. Eu sei que geralmente é possível executar imagens do Docker do Postgres com essa política, porque o RedHat fornece imagens modificadas para isso, mas elas podem ser usadas apenas no OpenShift Enterprise.

Como permitir que initdb process seja executado como qualquer usuário com direitos de gravação necessários, mas não sendo proprietário nem root? Precisa recompilar as fontes com sinalizadores especiais? Descobri que o RedHat está usando uma versão personalizada do Postgres, mas não descobri se eles modificaram as fontes ...

    
por 9ilsdx 9rvj 0lo 27.11.2018 / 09:46

0 respostas