Я хочу выполнить скрипт Bash, присутствующий в системе, из скрипта PHP. У меня есть два скрипта в системе. Один из них — это PHP-скрипт с именем client.php
, присутствующий в /var/www/html
, а другой — скрипт Bash с именем testscript
, присутствующий в /home/testuser
.
Мой скрипт client.php выглядит так
<?php
$message=shell_exec("/home/testuser/testscript 2>&1");
print_r($message);
?>
Мой тестовый скрипт выглядит так
#!/bin/bash
echo "Testscript run succesful"
Когда я делаю следующее на терминале
php client.php
Я получаю следующий вывод на терминале
Testscript run successful
Но когда я открываю страницу в
http://serverdomain/client.php
Я получаю следующий вывод
sh: /home/testuser/testscript: Permission denied
Я получаю эту ошибку даже после того, как выполнил chmod +x testscript.
Как мне заставить его работать из браузера? Пожалуйста помоги.
read
? РазрешениеExecute
бесполезно без разрешенияread
. - person Samveen   schedule 17.06.2013visudo NOPASSWD
- person bwoebi   schedule 17.06.2013sudo
разрешения для вашего веб-сервера в этом скрипте. Или заверните скрипт в бинарный файл suid. Но в любом случае, будьте ОЧЕНЬ ОЧЕНЬ ОЧЕНЬ ОЧЕНЬ осторожны с этим. Неправильный вызов сценария, неправильная передача некоторых данных, и вы предоставили удаленным пользователям корневую оболочку на своем сервере, и бум ваш сервер. - person Marc B   schedule 17.06.2013#!/bin/bash
вы должны использовать Posix#!/usr/bin/env bash
. Он должен найти Bash в других местах, например/usr/local/bin
, если он присутствует и находится на пути. - person jww   schedule 28.11.2018