Sudoers config para permitir argumentos para o script git post-commit

1

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?

    
por Pratik Amin 08.04.2011 / 15:51

2 respostas

1

Coloque em / usr / local / bin / whatever

#!/bin/bash --

reponame="$( printf '%q' "$1" )"
rev="$( printf '%q' "$2" )"

/usr/local/bin/trac-admin /path/to/trac changeset added "$reponame" "$rev"

Em seguida, use / usr / local / bin / whatever em sudoers. Deixe os usuários estas instruções:

sudo whatever repo rev
    
por 08.04.2011 / 16:16
2

crie um script que faça apenas o que você deseja conceder acesso, então conceda acesso sudo a esse script em vez de conceder acesso sudo ao trac-admin

    
por 08.04.2011 / 15:55