以不同用户身份在 sudoers 中执行 Postgres dropdb 和 createdb 命令

以不同用户身份在 sudoers 中执行 Postgres dropdb 和 createdb 命令

我经常需要删除 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

但在这个用例中,我需要运行以下命令PostgreSQL 的用户,它不起作用。

以不同用户身份运行命令而不被要求输入密码的正确方法是什么?

编辑:这可能是重复的,但它带来了不同的解决方案,visudo很有趣。

答案1

删除数据库创建数据库在类似这样的 bash 脚本中/usr/bin/recreatedb.sh

#!/bin/bash

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

然后创建一个特殊的sudoers规则使用维苏多

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

根据此规则:

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

相关内容