Я пытаюсь выполнить скрипт Python из функции php shell_exec (), но этот скрипт требует привилегий root.
Код Python очень прост. Используя библиотеки, wifi python выполняет сканирование всех SSID и предоставляет на выходе информацию о различных беспроводных сетях, в которые он провел сканирование, в формате JSON. Библиотеки WiFi сканируют, используя iwlist, для которого требуются права root. Если он выполняется пользователем, который не имеет привилегий root, он возвращает только информацию, относящуюся к Wi-Fi, к которому вы подключены.
Если я подключу свой код строки
<?php
echo 'Current script owner:'. get_current_user ();
?>
Я печатаю экран «Текущий владелец скрипта: root», но если я пытаюсь запустить свой код
<?php
$ Output = shell_exec ("python /home/acme/XDOMV2/conn1.py");
echo $ output;
?>
Он будет возвращать только информацию о сети, к которой подключена моя система Debian.
Как использовать веб-сервер lighttpd, и я следовал нескольким инструкциям по получению единственного результата переустановки lighttpd.
Вопрос в том, есть ли способ запустить скрипт python от имени root из lighttpd?
Где я не прав?
Я бы предложил запустить скрипт как пользователь с соответствующими правами.
Это минимизирует риск эксплойтов в системе.
Следующим шагом будет запуск скрипта в среде cron от имени этого пользователя (или root в худшем случае) и выдача результата через базу данных или кэшированную среду. Вы также можете доставить результат через сокеты или файловые дескрипторы.
Никогда не включайте веб-среду для запуска скриптов или чего-либо вроде root, это опасно и не то, как программное обеспечение (lighttpd) должно было работать.
Этот вопрос принадлежит UnixExchange но вы можете проверить это:
А также проверьте документы для вашей версии lighttpd, запуск от имени root возможен, но никак не звучит.
Других решений пока нет …