bash — Как запустить скрипт оболочки от имени другого пользователя с 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 — ничего не происходит. Я даже не могу определить, что не работает, так как никаких ошибок не выдается.

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

2

Решение

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

#Defaults   requiretty
#Defaults   !visiblepw

…все пошло!

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector