sudoers comando condicional / combo é possível?

1

Eu quero permitir o sudo dessa maneira:

myuser ALL=NOPASSWD:/usr/bin/pkill -fx "/usr/sbin/nethogs -v 3 -s" || /usr/sbin/nethogs -v 3 -s

para obter apenas uma única instância em execução de nethogs.

visudo aceita, mas não consigo executar esses comandos sem uma senha ...

Tentativas falhadas:

sudo '/usr/bin/pkill -fx "/usr/sbin/nethogs -v 3 -s" || /usr/sbin/nethogs -v 3 -s'
sudo /usr/bin/pkill -fx "/usr/sbin/nethogs -v 3 -s" || sudo /usr/sbin/nethogs -v 3 -s

PS .: esta versão do nethogs é compilada de seu cvs no sf.net

    
por Aquarius Power 16.06.2014 / 22:26

1 resposta

3

Você só pode usar os nomes ou caminhos de programas ou scripts (e, opcionalmente, argumentos para eles) nas construções de sudoers - shell como || não funcionará.
Citando man sudoers :

command name ::= file name |
                 file name args |
                 file name '""'

A maneira mais fácil de contornar isso é criar um script que execute seu conjunto de comandos, torne-o gravável somente pelo root e conceda permissão para executá-lo via sudo .

A página de manual para sudo , na verdade, fornece um exemplo que executa comandos em um subshell, mas não encontrei uma maneira de permitir isso na configuração de sudoers (e nenhum deles tem lista de discussão sudo-users )

.

    
por 16.06.2014 / 23:23

Tags