Попытка запустить сценарий оболочки с помощью запроса 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
параметр в файле sudoers, когда он был изменен на …
#Defaults requiretty
#Defaults !visiblepw
…все пошло!
Других решений пока нет …