Попытка запуска сценария оболочки с запросом 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
… все прошло!