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

8

Я хочу добавить запись в мои suoders, чтобы позволить одному пользователю запускать команду с одним аргументом без опций.

# 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 sytnax? Или мне нужно создать вспомогательный скрипт?

Элронд
источник
это аргумент, как всегда -abc? или это может варьироваться?
Майк
Это [a-z]*уже тот аргумент, который я хочу. Так что это переменный аргумент. (Я использую / bin / echo только для тестирования.)
Elrond

Ответы:

8

Насколько мне известно, вы не можете передавать некомандные аргументы в 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 wrappers, вы можете найти еще много примеров.

Обязательно жестко запишите все пути и запустите проверку работоспособности на входе, если пользователю нельзя доверять.

jeffatrackaid
источник
2
В любом случае должны быть проверены. Не доверять никому! [/ paranoid]
Натан С