Команды Postgres dropdb и createdb в sudoers как другой пользователь [дубликат]

Мне регулярно нужно выбросить базу данных postres и воссоздать ее. Это должно быть сделано как пользователь postgres следующим образом:

$ sudo -u postres dropdb my_database

Я думал добавить правила sudoers за то, что у меня не спрашивали пароль. Обычно я создаю файл в /etc/sudoers.d/ с правилом, подобным этому:

Cmnd_Alias DROP_DB = /bin/bash -l -c dropdb*, /usr/bin/dropdb*
emilio ALL = NOPASSWD: DROP_DB

Но в этом случае мне нужно выполнить команду от пользователя postgres, и это не работает.

Как правильно выполнять команду от роли другого пользователя без ввода пароля?

РЕДАКТИРОВАТЬ: Это может быть дубликатом, но он приносит другое решение, используя visudo, что интересно.

1
задан 6 May 2019 в 14:25

1 ответ

Оберните dropdb и createb в сценарий bash, например /usr/bin/recreatedb.sh:

#!/bin/bash

sudo -u postgres dropdb $2
sudo -u postgres createdb -O $1 $2

Затем создайте специальное правило sudoers , используя visudo :

$ sudo visudo -f /etc/sudoers.d/postgresql

С этим правилом:

Cmnd_Alias RECREATE_DB = /bin/bash -l -c recreatedb*, /usr/bin/recreatedb*
username ALL = NOPASSWD: RECREATE_DB

0
ответ дан 6 May 2019 в 14:25

Другие вопросы по тегам:

Похожие вопросы: