Я хочу добавить запись в мои sudoers, чтобы позволить одному пользователю запускать команду только с одним аргументом без параметров.
# tail -1 /etc/sudoers
ALL ALL = (:tool) NOPASSWD: /bin/echo [a-z]*
$ sudo -g tool /bin/echo abc def
abc def
$ sudo -g tool /bin/echo -abc def
[sudo] password for user:
Могу ли я сделать это с помощью синтаксиса sudoers? Или мне нужно создать вспомогательный скрипт?
Насколько мне известно, вы не можете передавать аргументы, не являющиеся командами, в sudo, если этот аргумент изменяется.
Вы можете указать что-то вроде этого:
users ALL=(ALL) NOPASSWD: /usr/bin/tail /some/file
Это позволит пользователю отслеживать некоторые файлы, но не другие файлы.
Если вам нужно передать переменную, я рекомендую сценарий-оболочку.
Вот пример оболочки rsync:
https://sites.google.com/site/beingroot/articles/useful-scripts/wrapper-script-to-use-rsync-via-sudo
Если вы поищете в Google обертки sudo, вы сможете найти еще много примеров.
Не забудьте жестко запрограммировать все пути и запустить проверку работоспособности ввода, если пользователю нельзя доверять.