Отключить пароль sudo для входа конкретного пользователя - PullRequest
0 голосов
/ 30 мая 2019

У меня есть сценарий bash, который выполняет некоторые PostgreSQL как

sudo -i -u postgres psql <<EOF > /dev/null
--SQL CODE
EOF

. Sudo запрашивает у меня пароль для текущего пользователя, и я хотел бы отключить его.Я не хочу предоставлять пароль внутри скрипта через sudo -S.Я знаю, что могу отключить пароль для sudo, используя visudo, однако мне нужно указать команду, для которой его нужно отключить (я не хочу отключать его глобально).Как отключить пароль sudo для sudo -i -u postgres?

1 Ответ

1 голос
/ 30 мая 2019

Вам, вероятно, нравится строка в файле sudoers:

script_user ALL = (postgres) NOPASSWD: /usr/bin/psql

Отдельные позиции в строке:

  • script_user: (стандартный) пользователь, использующий скрипт bash (т. Е. Ваша учетная запись)
  • ALL: специальная переменная, здесь в позиции, где указываются все хосты. Вы можете попытаться ограничить это, например, localhost если хочешь
  • (postgres): пользователь для запуска команды (команд) от имени. То есть пользователь, указанный в опции -u
  • NOPASSWD: специальная переменная, указывающая, что для следующей команды не требуется пароль (конечно, для этой комбинации пользователя, пользователя sudo и хоста)
  • /usr/bin/psql: разрешена конкретная команда. Это также может быть список команд, разделенных запятыми, или ALL. (Очевидно, что путь может быть другим на вашей машине.)

Связанные вопросы и ответы по StackOverflow немного разбросаны и, кажется, не отвечают полностью на ваш конкретный вопрос, но я натолкнулся на общую приятную статью по этой теме от Abhijit Menon- Сен, который мне показался более понятным, чем различные справочные страницы по sudo & friends.

...