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

Как избежать указания полного пути в файле sudoers?

Я пытаюсь добавить NOPASSWD запись для sudotest.sh (или любой скрипт / двоичный файл, требующий sudo) в моем /etc/sudoers (на сервере Ubuntu 12.04 LTS), но для того, чтобы он заработал, я должен указать полный путь. Следующая запись отлично работает:

%jenkins ALL=(ALL)NOPASSWD:/home/vts_share/test/sudotest.sh

Проблема в том, что сценарий может переместиться в другой каталог. Кажется, это отличный шанс использовать * подстановочный знак в пути (т.е. /*/sudotest.sh), чтобы мой сценарий мог находиться в любом каталоге, но в руководстве указано, что подстановочные знаки не будут соответствовать / символ при использовании в пути. Я подтвердил, что это не работает.

Я знаю, что могу использовать это слово ALL вместо моего скрипта, но это означает, что нет запроса пароля для любых команд, что кажется небезопасным.

Как мне решить эту проблему?

Размещение ALL вместо вашего скрипта не позволит запустить его, если он не будет найден в правильно настроенном PATH.

Чтобы выполнить команду без указания полного пути, она должна находиться в каталоге, указанном переменной PATH.

Для sudo это зависит от того, как настроена среда в отношении того, какой PATH используется.

Если secure_path переменная устанавливается в sudoers, тогда команды должны располагаться в ее каталогах.

Вы можете добавлять пользователей в exempt_group, то они могут использовать свой собственный PATH.