Ausführen von Python-Skript aus Php
Ich habe eine PHP-Webseite auf meinem raspberry pi mit 2 Tasten (auf und ab)
Der auf-Taste-Taste leitet zum On.php
Den aus-Knopf leitet auf Off.php
In "/usr/lib/cgi-bin" habe ich ein python-Skript, das ich durchführen möchte (script.py)
Ich kann gut führen Sie es aus dem terminal durch Eingabe von
cd /usr/lib/cgi-bin
sudo python script.py
Funktioniert es, wenn ich es aus dem terminal.
Das problem ist die PHP-Datei (On.php) in meiner "/var/www" - Ordner.
Dies ist, was ich schrieb:
<?php
exec('cd /usr/lib/cgi-bin');
exec('sudo python script.py');
?>
Warum ist das script ausführen aus dem terminal, aber nicht aus meiner PHP?
Hat Ihr super user Passwort haben?
InformationsquelleAutor ChubbyChocolate | 2015-08-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht verwenden sudo aus einem PHP-Skript. Apache läuft von einem Benutzer (www-data im Allgemeinen), so Bearbeiten Sie diese Datei :
/etc/sudoers
Dann fügen Sie diese Zeile :
Pflege ! diese ermächtigen, alle Funktionen aufgerufen werden, indem ein PHP-Skript, können Sie anpassen, ändern "ALLE", die vom Skript oder Python-Befehl.
Dann präzise Ihre Benutzer in der exec-Befehl :
Damit entfernen Sie das Kennwort der Benutzer www-data, das ist, warum Sie Fragen können, NOPASSWD auf einige Befehl, wie
NOPASSWD:python
. Es wird nicht etwas ändern, der für andere Benutzer.Ok, ich bin kein Experte, ich wollte nur sicherstellen, dass niemand konnte hack in mein raspberry als superuser oder andere Benutzer.
Diese erlaubt das benutzen von sudo ohne Passwort, nur der Benutzer
www-data
. Dieser Benutzer kann keine Verbindung über SSH-also kein Risiko.sudo
www-data
ohne Passwort überhaupt nicht sicher. es ist nicht über SSH, es geht darum, Nginx, Apache2 etc.. Wenn einer der Server ausgenutzt wurden, kann es die Ausführung entfernter Befehle. Wenn esroot
Privileg, einige glücklich, einige traurig. Es passiert immer.InformationsquelleAutor Vincent Decaux
Probieren Sie es aus, es sollte funktionieren:
Oder auch dieses:
InformationsquelleAutor Alberto Pagani
Auf eine ältere Raspbian-distribution, die Sie benötigen, um Ihre Datei in
/var/www/file.py
. Also in deinem file.php Sie fügen hinzu:Einer neueren Raspbian Jessie, die Sie benötigen, um Ihre Datei in
/var/www/html/file.py
, also in Ihrem file.php Sie müssen hinzufügen:Oder nur jede file.py
?>
Hinweis: damit dies funktioniert, müssen Sie eine Datei Bearbeiten, zuerst fügen Sie diese Zeilen zu ermöglichen, ohne Passwort sudo
sudo nano /etc/sudoers
dann gehen Sie nach unten und fügen Sie diese
NOPASSWD: ALL
! Dies kann wiederum zu einem sehr großen Sicherheitsproblem. Siehe @dotslash Kommentar obenja können wenn er online ist dieses pi ist nur ein Haus, abgelegen, dass ist alles. Für die Leute, die Lesen, die dies nicht tun, um Kontrolle über das internet
So? Wenn es mit einem Netzwerk verbunden, es kann beeinträchtigt werden, wenn jemand versucht, hart genug. Nur tun Sie es nicht. Es gibt bessere Möglichkeiten, wie z.B. Alberto Pagani Antwort.
InformationsquelleAutor Code1