Как запустить сценарий оболочки как другой пользователь с PHP на Nginx?

Попытка запуска сценария оболочки с запросом POST (обрабатывается nginx). Пока нет успеха.

Что у меня есть:

exec('whoami'); // nginx nginx:x:220:498:Nginx web server:/var/lib/nginx:/sbin/nologin 

Как видим, пользователь nginx не имеет оболочки. Может быть, это проблема? Следующий,

 nginx ALL=(user) NOPASSWD: /path/to/script.sh 

Если я изменю nginx на моего настоящего пользователя, я могу запустить sudo -u user /path/to/script.sh без приглашения пароля, но по какой-то причине меня все еще спрашивают пароль, если я запускаю su -s /bin/bash -c /path/to/script.sh user . Возможно, последняя инволюция несколько более подходит для пользователя nginx , так как он имеет оболочку nologin .

Поэтому всякий раз, когда я запускаю exec('sudo -u user /path/to/script.sh'); или запустить некоторый скрипт-оболочку с этой строкой в ​​нем через PHP – ничего не происходит. Я даже не могу определить, что не работает, поскольку ошибки не возникают.

Любая помощь приветствуется.

Благодаря @fejese и @triplee, я, наконец, понял это. Мне пришлось requiretty параметр requiretty в файле sudoers, когда это было изменено на …

 #Defaults requiretty #Defaults !visiblepw 

… все прошло!