Linux

CentOS 7 sudo 不以使用者身份執行命令

  • February 10, 2018

我有一點問題,希望有人可以幫助我。

我正在編寫一個 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 命令中是否缺少標誌或其他內容?…. 任何幫助將不勝感激。

如果使用者是 root,您可以使用**-c選項和su**

su - postgres -c "<commands>"

或者使用sudo和**-c**

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

引用自:https://serverfault.com/questions/896616