bash — запустить ./script.sh из переполнения стека

У меня есть веб-сервер, который воспроизводит музыку из Raspberry и включает светодиод со скриптом 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’ РАБОТАЕТ и может воспроизводить песню, НО она не может запустить этот gpio.sh.
Владелец index.php — www-data

-rwx —— 1 www-data www-data 1262 декабрь 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.
Пожалуйста помоги.

0

Решение

Идеальным решением для вас было бы установить SUID для скрипта gpio.sh но к сожалению
ты не можешь сделайте так, насколько gpio.sh является скриптом.

У вас есть три варианта:

  • Вы можете превратить ваш скрипт в приложение скажем C ++ и затем установить SUID
  • Вы можете использовать некоторые библиотеки GPIO для Python, которые не требуют использования root, например: pigpio
  • Вы можете установить SUID для интерпретатора Python, но я не уверен, что это хорошая идея вообще
0

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

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

По вопросам рекламы [email protected]