Я хочу разрешить 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) .