У меня есть скрипт bash, который выполняет некоторый PostgreSQL как
sudo -i -u postgres psql <<EOF > /dev/null
--SQL CODE
EOF
Судо запрашивает пароль для текущего пользователя, и я хотел бы отключить его. Я не хочу указывать пароль внутри скрипта через sudo -S. Я знаю, что могу отключить пароль для sudo с помощью visudo
, однако мне нужно указать команду, для которой его нужно отключить (я не хочу отключать его глобально). Как отключить пароль sudo для sudo -i -u postgres
?
Вам, вероятно, нравится следующая строка в файле sudoers:
script_user ALL = (postgres) NOPASSWD: /usr/bin/psql
Отдельные позиции в линейке следующие:
script_user
: (стандартный) пользователь, использующий скрипт bash (т. е. ваша учетная запись пользователя)ALL
: специальная переменная, здесь она указывает на все хосты. Вы можете попробовать ограничить это, например. localhost
если хочешь(postgres)
: пользователь для запуска команды (команд) как. То есть пользователь, указанный опцией -u
NOPASSWD:
специальная переменная, указывающая, что следующая команда не требует пароля (конечно, для этой комбинации пользователя, пользователя sudo и хоста)/usr/bin/psql
: разрешена конкретная команда. Это также может быть список команд, разделенных запятыми, или ALL
. (Очевидно, что на вашем компьютере путь может быть другим.)Связанные вопросы и ответы на StackOverflow немного разрознены и, похоже, не полностью отвечают на ваш конкретный вопрос, но я наткнулся на в целом хорошая статья на эту тему Абхиджита Менон-Сена, который мне показался более понятным для чтения, чем различные справочные страницы по sudo & друзья.
Потрясающий! Спасибо за ответ и ссылку.