Nós temos um script git post-commit que precisa ser executado com o Git e o Trac, quando alguém comete algo que um hook é chamado e executa o comando:
trac-admin /path/to/trac changeset added "reponame" $REV
Onde $ REV é dinâmico dependendo da revisão do push. O problema é que esse comando requer que o usuário que está cometendo tenha permissão de gravação no banco de dados trac.
Temos muitos usuários comprometidos, eles estão todos em um grupo Linux chamado "git", eu posso dar rw para este grupo no arquivo trac DB (SQLite) e ele funciona no entanto qualquer um no grupo "git" pode deletar o banco de dados. Atualmente, é propriedade da www-data, www-data.
Eu adicionei uma linha de configuração do sudo:
%git ALL=(www-data) NOPASSWD: /usr/local/bin/trac-admin
Isso funciona, ele permite que o script funcione, porém agora eles têm todas as opções que vêm com o trac-admin, quero limitar o acesso deste comando para incluir os argumentos de / path / to / trac, e alterar conjunto adicionado.
Eu tentei adicionar um Cmnd Alias com o conjunto de caracteres / usr / local / bin / trac-admin / caminho / para / trac adicionado "reponame", mas ele não funciona porque o $ REV adicionado está quebrando, e isso não pode ser adicionado dinamicamente em / etc / sudoers.
Existe uma maneira de incluir curingas no Cmnd Alias para permitir que isso funcione em sudoers?