Мне регулярно нужно выбросить базу данных 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
, что интересно.
Оберните 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