Monit vs Controle de origem: problemas de permissão

3

Estou tentando ser bom. Esse é o meu grande erro.

Estou sendo bom com o monitoramento de processos: monitorei alguns processos importantes e os reiniciei se eles falharem.

Estou sendo bom por não executar como root: Monit executa um servidor web, e eu não quero que ele seja executado como root no caso de haver um problema de segurança. Então, eu tenho um usuário especial 'monit', que tem as permissões necessárias para iniciar e parar alguns processos chave, e é sobre isso.

O processo monit lê um arquivo monit / monitrc, e monit insiste que o arquivo é legível apenas pelo usuário que ele executa como, por exemplo, o usuário monit.

Estou sendo bom armazenando todos os meus scripts e configurações operacionais no controle de origem (mercurial), para que eu possa reconstruir as máquinas com as mesmas especificações. Eu ou outros desenvolvedores, alterações de check-in nos scripts para o controle de origem e, em seguida, puxo os resultados para a máquina de produção. Os links simbólicos apontam de ~ monit / .monitrc para o diretório de controle de origem.

No entanto, é aí que tudo cai - o diretório de controle de origem é gravado pelo Mercurial quando eu puxo os scripts mais recentes, mas o comando pull não está sendo executado como monit, então o arquivo monitrc é gravável por outro usuário. qual monit não gosta e não será executado.

Eu posso constantemente chorar e chmodding o arquivo monitrc antes e depois de cada puxada, mas isso é repleto de descuidos.

Eu não consigo ver como pedir a monit para relaxar sobre a propriedade. Não consigo ver como pedaços pegajosos vão ajudar.

Alguma sugestão?

    
por Oddthinking 09.03.2013 / 02:20

1 resposta

0

Você sempre pode transformar hg em um script que chama hg e, em seguida, lida com as permissões. Algo como

!#/bin/bash
/usr/bin/hg.bin $@ && chmod 400 ~monit/monitrc && chown monit ~monit/monitrc

Salve o script como /usr/bin/hg (ou onde quer que seu hg binário esteja instalado) e

mv /usr/bin/hg /usr/bin/hg.bin
chmod 744 ~monit/monitrc

Supondo que seu usuário normal tenha permissões para executar os comandos chmod e chown , isso deve funcionar.

    
por 04.04.2013 / 04:51