O comando sudoers condicional/combo é possível?

O comando sudoers condicional/combo é possível?

Eu quero permitir o sudo desta forma:

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

então recebo apenas uma única instância em execução de nethogs.

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

Tentativas falhas:

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 a partir de seus cvs no sf.net

Responder1

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

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

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


A página de manual do sudona verdade dá um exemplo que executa comandos em um subshell, mas não encontrei uma maneira de permitir isso na sudoersconfiguração (e nema lista de discussão sudo-users) .

informação relacionada