CentOS 7 sudo 无法以用户身份运行命令

CentOS 7 sudo 无法以用户身份运行命令

我遇到了一点问题,希望有人能帮助我。

我正在编写一个 bash 脚本来设置一些软件,例如 nginx、postgres 等

到目前为止一切都很顺利,除了设置 PostgreSQL

我需要运行以下命令;

psql -c "CREATE ROLE myboxname LOGIN UNENCRYPTED PASSWORD 'secret' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;"

但我需要通过 sudo 来完成。

我的完整命令如下;

sudo su - postgres psql -c "CREATE ROLE myboxname LOGIN UNENCRYPTED PASSWORD 'secret' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;"

当我运行这个时,我得到以下内容;

psql: CREATE: command not found

但如果我执行以下操作,它就可以正常工作

sudo su - postgres
psql -c "CREATE ROLE myboxname LOGIN UNENCRYPTED PASSWORD 'secret' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;"

我的 sudo 命令中是否缺少标志或其他东西?... 任何帮助都将不胜感激。

答案1

如果用户是root,你可以使用-C选择

su - postgres -c "<commands>"

或者使用须藤-C

sudo -U postgres -c "<commands>" -s /bin/bash

相关内容