Como copiar arquivos como ação "pós-compilação" do Jenkins se eu não tiver privilégios no diretório de destino

Como copiar arquivos como ação "pós-compilação" do Jenkins se eu não tiver privilégios no diretório de destino

Tenho os seguintes usuários "arquitetura":

  1. o acesso root está desabilitado.
  2. O usuário administrador tem acesso apenas ao seu diretório inicial.
  3. O Apache é executado como serviço root (root é o único que tem acesso aos arquivos do servidor web)
  4. Instalei o Jenkins CI, que está construindo meu projeto com privilégios de "admin".

gostaria de copiar os arquivos de compilação mais recentes para o local do meu servidor da web como uma ação pós-compilação. como posso fazer isso se apenas o usuário "root" tiver acesso ao meu diretório de destino? talvez minha "arquitetura de usuários" esteja errada em primeiro lugar?

Responder1

Talvez minha "arquitetura de usuários" esteja errada em primeiro lugar?

Sim. Odeio dizer isso a você, mas é isso. Veja como você deve alterá-lo:

  1. Execute o Apache como seu próprio usuário, de preferência em um chroot. Isso é chamado de princípio do privilégio mínimo – a ideia é limitar o dano que pode ser causado caso algo seja comprometido. Suponha que algovaicomprometa-se e trabalhe a partir daí. Não há razão para você executar o Apache como um usuário privilegiado.
  2. Execute o Jenkins CI como seu próprio usuário. O mesmo princípio se aplica.
  3. Forneça alguma maneira para os arquivos chegarem ao diretório do servidor web. Por exemplo, você poderia adicionar o usuário Jenkins ao grupo Apache. Isso deve dar ao servidor de compilação Jenkins acesso ao diretório do servidor web. Uma maneira ainda mais segura seria executar um cron job ou um timer do systemd como usuário do Apache e usá-lo para copiar os arquivos. Por que isso é mais seguro? Se o Jenkins estiver comprometido, o invasor não terá acesso aos diretórios do seu servidor web.

informação relacionada