Возможна ли условная/комбинированная команда sudoers?

Возможна ли условная/комбинированная команда sudoers?

Я хочу разрешить sudo следующим образом:

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

поэтому я получаю только один работающий экземпляр nethogs.

visudo принимает его, но я не могу запустить эти команды без пароля...

Неудачные попытки:

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: эта версия nethogs скомпилирована из cvs на sf.net

решение1

Вы можете использовать только имена или пути программ или скриптов (и, при необходимости, аргументы для них) в sudoersфайле — конструкции оболочки вроде этого ||работать не будут.
Цитата man sudoers:

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

Самый простой способ обойти эту проблему — создать скрипт, который выполняет ваш набор команд, сделать его доступным для записи только пользователю root и предоставить разрешение на его выполнение через sudo.


На странице руководства sudoна самом деле есть пример, который выполняет команды в подоболочке, но я не нашел способа разрешить это в конфигурации sudoers( и ни один из них несписок рассылки sudo-users) .

Связанный контент