Subversion
Eu colocaria o conteúdo do crontab sob controle de subversão e apenas concederia acesso a esse usuário através de sudo
. Especificamente, eu só permitiria que as pessoas acessassem o comando a por sudo
, o que tiraria a atenção da subversão e a instalaria como o mais recente crontab para esse usuário em particular. Isso fornecerá o seguinte:
- Uma trilha de auditoria de quem fez o quê
- A capacidade de reverter para um arquivo crontab anterior se surgir um problema
- Isole os operadores de ter muita permissão para essa conta especial
Pode parecer muito complicado, mas não há nada muito complicado com o que descrevi se você dividir em pequenos pedaços.
MultiCron
Outra abordagem seria usar uma ferramenta / script como MultiCron . Esta ferramenta permite que você gerencie os dados do crontab externos à entrada do crontab, para que você possa controlar melhor quem / quando tem acesso a essas mudanças.
Exemplo usando o Subversion
Supondo que você configuraria um repositório SVN, você poderia criar uma entrada sudo
que permitiria aos usuários fazer algo assim:
$ sudo deploy_app_cron.bash
As entranhas deste script podem fazer, entre outras coisas:
svn cat file:///home/saml/svnrepo/app_cron_data.txt | crontab -u saml -
O conteúdo do arquivo app_cron_data.txt
:
$ svn cat file:///home/saml/svnrepo/app_cron_data.txt
*/5 * * * * /path/to/job -with args"
Exemplo de uso de loop
Assim, o userA deseja atualizar a entrada do crontab. Eles fariam o seguinte para começar:
$ cd $HOME/somedir
$ svn co file:///home/saml/svnrepo/ mywksp
A mywksp/app_cron_data.txt
$ cd mywksp
Agora, eles fazem algumas edições no arquivo crontab, app_cron_data.txt
, e as enviam ao repositório quando terminarem.
$ svn commit -m "some msg.." app_cron_data.txt
Para implantar essas alterações, eles executariam este comando sudo
:
$ sudo deploy_app_cron.bash