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 sudoers
archivo; 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 sudo
en realidad ofrece un ejemplo que ejecuta comandos en un subshell, pero no he encontrado una manera de permitirlo en la sudoers
configuración (y tampocola lista de correo de usuarios de sudo) .