Como copiar arquivos como Jenkins “post build” se eu não tiver privilégios para o diretório de destino

1

Eu tenho os seguintes usuários "arquitetura":

    O
  1. acesso root está desativado.
  2. o usuário administrador tem acesso somente ao seu diretório inicial.
  3. O Apache é executado como serviço raiz (a raiz é a única que tem acesso aos arquivos do servidor da web)
  4. Eu instalei o jenkins CI que está criando meu projeto com privilégios de "admin".

Eu gostaria de copiar os arquivos de compilação mais recentes para o local do meu servidor da web como uma ação de pós-compilação. Como posso conseguir 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?

    
por Ori Price 07.05.2014 / 16:56

1 resposta

4

Maybe my "users architecture" is all wrong in the first place?

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

  1. Execute o Apache como seu próprio usuário, preferencialmente em um chroot. Isso é chamado de princípio do privilégio mínimo - a ideia é limitar o dano que pode ser feito no caso de algo ser comprometido. Suponha que algo será comprometido e trabalhe a partir daí. Não há razão para você estar executando 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. Fornece uma maneira de os arquivos chegarem ao diretório do servidor da web. Por exemplo, você pode adicionar o usuário Jenkins ao grupo Apache. Isso deve fornecer ao servidor de construção Jenkins acesso ao diretório do servidor da web. Uma maneira ainda mais segura seria executar um cron job ou um timer do systemd como o usuário do Apache e usá-lo para copiar os arquivos. Por que isso é mais seguro? Se o Jenkins for comprometido, o invasor não terá acesso aos diretórios do servidor da Web.
por 07.05.2014 / 17:40