Как заставить PHP выполнять Python3 скрипт как root? - PullRequest
0 голосов
/ 17 июня 2020

Я хочу, чтобы PHP выполнял сценарий Python3. Я сделал

$command = escapeshellcmd('pathtofile.py');
$output = shell_exec($command);
echo $output;

Но всякий раз, когда скрипт запускается, я получаю сообщение об ошибке :Permission Denied.

Я использую веб-сервер (Apache2 в Ubuntu 18.04), а VPS имеет только одного пользователя - root.

Я также сделал chmod +x path.py и добавил строку shebang в the scipt.

Обычно скрипт запускается, когда пользователь успешно регистрируется.

1 Ответ

0 голосов
/ 17 июня 2020

Вы должны добавить apache пользователя в файл sudoers, например: www-data ALL = (ALL: ALL) NOPASSWD: ALL, тогда вы можете выполнить сценарий следующим образом: 'sudo pathtofile.py'

Или вы можете использовать скомпилированную оболочку. Напишите программу C, выполняющую скрипт, затем скомпилируйте ее. Затем установите липкий бит: chown root: root wrapper chmod a + rs wrapper

Затем включите www-data в группу root. Теперь можно выполнить оболочку из вашего сценария php, а оболочка выполнит сценарий python как root.

...