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:
- 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.
- Execute o Jenkins CI como seu próprio usuário. O mesmo princípio se aplica.
- 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.