¿Es posible el comando sudoers condicional/combinado?

¿Es posible el comando sudoers condicional/combinado?

Quiero permitir sudo de esta manera:

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

entonces obtengo solo una instancia en ejecución de nethogs.

visudo lo acepta, pero no puedo ejecutar estos comandos sin contraseña...

Intentos fallidos:

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

P.D.: esta versión de nethogs está compilada a partir de sus cvs en sf.net

Respuesta1

Solo puede usar los nombres o rutas de programas o scripts (y opcionalmente argumentos para ellos) en el sudoersarchivo; las construcciones de shell como ||no funcionarán.
Citando man sudoers:

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

La forma más sencilla de solucionar este problema será crear un script que ejecute su conjunto de comandos, hacerlo escribible solo por root y otorgarle permiso para ejecutarlo a través de sudo.


La página de manual de sudoen realidad ofrece un ejemplo que ejecuta comandos en un subshell, pero no he encontrado una manera de permitirlo en la sudoersconfiguración (y tampocola lista de correo de usuarios de sudo) .

información relacionada