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

Синтаксис sudoers для запуска сценария оболочки от имени пользователя php?

Я хочу бежать

сценарий будет содержать несколько строк кода, что-то вроде

dropdb <database name>
psql -c "create database <database name> with encoding 'unicode';" -U edutemplate1
psql -d <database name> -f edu.hourly.sql 

ОБНОВИТЬ

на первую часть вопроса уже был дан ответ на SO sudoers-syntax-to-run-shell-script-as-php-user;

ОБНОВЛЕНИЕ2

я добавил 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) '

ОБНОВЛЕНИЕ3

обновление 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, или никто или другого пользователя?