Назад | Перейти на главную страницу

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 или что-то в этом роде? .... Любая помощь будет принята с благодарностью.

Если пользователь root, вы можете использовать -c вариант с вс

su - postgres -c "<commands>"

Или используйте судо с участием -c

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