![以不同用户身份在 sudoers 中执行 Postgres dropdb 和 createdb 命令](https://linux22.com/image/911591/%E4%BB%A5%E4%B8%8D%E5%90%8C%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E5%9C%A8%20sudoers%20%E4%B8%AD%E6%89%A7%E8%A1%8C%20Postgres%20dropdb%20%E5%92%8C%20createdb%20%E5%91%BD%E4%BB%A4.png)
我经常需要删除 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