Назад | Перейти на главную страницу

sudo: Как разрешить команде только один аргумент?

Я хочу добавить запись в мои 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, вы сможете найти еще много примеров.

Не забудьте жестко запрограммировать все пути и запустить проверку работоспособности ввода, если пользователю нельзя доверять.