У меня есть веб-сервер, который воспроизводит музыку из малины и включает светодиод со сценарием gpio.sh. Я использую mpd, mpc и gpio.
Мой /var/www/index.php:
<html><body><?php
echo exec('whoami');
if(isset($_POST['button1']))
{
shell_exec('mpc play')
shell_exec('/bin/bash /var/www/gpio.sh');
}
?>
<form method="post">
<p align=center>
OUTPUT (AUDIO) => <button name="button1">PLAY</button>
</p>
</form>
</body></html>
В терминале я могу запустить /bin/bash/var/www/gpio.sh успешно и включить светодиод. С веб-сервера "mpc play" WORKS и может играть песню, но он не может запустить этот gpio.sh. Владельцем index.php является www-data
-rwx ------ 1 www-data www-data 1262 Dec 8 10:45 gpio.sh
-rwx ------ 1 www-data www-data 272 дек. 9 09:39 index.php
Что мне делать? Когда я меняю владельца index.php или gpio.sh на root, php не может выполнить. Неверен ли мой index.php? Я не могу выполнить.sh из php. Пожалуйста помоги.
Идеальным решением для вас было бы установить SUID для скрипта gpio.sh, но, к сожалению, вы не можете этого сделать, поскольку gpio.sh - это скрипт.
У вас есть три варианта: