У меня есть каталог со сценариями: / etc / scripts.
Теперь я хочу выполнить такие сценарии, как: sudo scriptname
без необходимости указывать пароль или указывать путь к сценарию.
Я добавил / etc / scripts в переменную $ PATH:
/etc/scripts:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
, а также добавил различные пути к этим скриптам в конец моего файла sudoers, например:
steven ALL=(ALL) NOPASSWD:/etc/scripts/dns_add_zone,/etc/scripts/dns_add_record
Итак, выполняю скрипт типа sudo / etc / scripts / scriptname
работает, но не без указания пути.
В Ubuntu sudo
настроен на поиск программ в собственном secure_path
, определенном в /etc/sudoers
, а не PATH
вызывающего пользователя или целевого (корневого) пользователя:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
Если вы хотите, чтобы он находил программы в /etc/scripts, вам нужно добавить этот каталог в безопасный_путь
. Однако вы можете рассмотреть возможность использования одного из местоположений, которое уже находится в secure_path
, например /usr/local/sbin
, что будет более соответствовать иерархии файловой системы. Стандарт.