Команда в файле sudoers?

Я добавляю команду ниже в файл sudoers, но это дает мне синтаксическую ошибку, не позволяющую «foo = bar» перед командой.

user   ALL=(runas) SETENV:NOPASSWD:foo=bar /path/to/command /path/to/script

Если я добавлю префикс /bin/bash, это сработает

user   ALL=(runas) SETENV:NOPASSWD:/bin/bash -c "foo=bar /path/to/command /path/to/script"

но когда я запускаю sudo от пользователя, он запрашивает пароль. Может кто-нибудь, пожалуйста, дайте мне знать, как это должно работать?


person Nadeem    schedule 29.12.2017    source источник
comment
SO предназначен для вопросов по программированию, а не вопросов по использованию или настройке Linux. SuperUser.com или unix.stackexchange.com были бы лучшими местами для таких вопросов.   -  person Barmar    schedule 29.12.2017


Ответы (1)


Ваш список команд должен быть файлом в вашей файловой системе с указанием его полного пути. Я не совсем уверен, что вообще должен означать ваш foo=bar "command". Если это устанавливаемая переменная, вам не хватает точки с запятой (foo=bar;)? Но в любом случае sudo — это не установка переменных, а запуск команд. Вы должны просто полностью избавиться от foo=bar и сохранить

user   ALL=(runas) SETENV:NOPASSWD: /path/to/command /path/to/script

Вы бы не использовали sudo, чтобы помешать пользователю установить переменную (если это то, что вы вообще имели в виду).

из справочных страниц:

Cmnd_List — это список из одного или нескольких имен команд, каталогов и других псевдонимов. Имя команды — это полное имя файла, которое может включать подстановочные знаки в стиле оболочки (см. раздел «Подстановочные знаки» ниже).

person Adriano_Pinaffo    schedule 13.09.2018