Я хочу бежать
restore
php
)сценарий будет содержать несколько строк кода, что-то вроде
dropdb <database name>
psql -c "create database <database name> with encoding 'unicode';" -U edutemplate1
psql -d <database name> -f edu.hourly.sql
restore
что было бы синтаксис sudoers чтобы позволить пользователю php запускать restore
сценарий как postgres
пользователь?
Sudo версия 1.7.2p7
на первую часть вопроса уже был дан ответ на SO sudoers-syntax-to-run-shell-script-as-php-user;
я добавил php ALL=(postgres) NOPASSWD: /usr/bin/id
в / etc / sudoers, а затем сделал su php
а потом sudo -su postgres /usr/bin/id
но меня просят ввести пароль postgres. Если я введу ту же команду sudo под пользователем root, я получу правильный вывод: uid = 26 (postgres) gid = 26 (postgres) groups = 26 (postgres) '
обновление sudoers до php ALL=(postgres) NOPASSWD: ALL
заставляет это работать ...
Смотрите также этот ответ по аналогичному сценарию.
Это входит в /etc/sudoers
:
php ALL=(postgres) NOPASSWD: /the/restore/script
И вы заставляете php выдавать такую команду: sudo -u postgres /the/restore/script
Вы можете сделать это от root "su $ USERNAME -c" command "" в любом случае вы можете сделать это и через sudo, если вы можете, пожалуйста, опишите, что именно вы хотите сделать? Например от какого пользователя? требуется пароль? (вы можете определить это в / etc / sudoers) Под "пользователем php" Вы имеете в виду www-data, или никто или другого пользователя?