Ich habe eine PHP-Webseite auf meinem Himbeer-Pi mit 2 Schaltflächen (ein und aus). Die Schaltfläche “Ein” leitet zu On.php weiter. Die Schaltfläche “Aus” leitet zu Off.php weiter. In “/usr/lib/cgi-bin” habe ich ein Python-Skript die ich ausführen möchte (script.py), kann ich perfekt vom Terminal aus ausführen, indem ich sie eintippe
cd /usr/lib/cgi-bin
sudo python script.py
Es funktioniert, wenn ich es vom Terminal aus mache.
Das Problem ist die PHP-Datei (On.php) in meinem “/var/www”-Ordner. Das habe ich geschrieben:
Warum wird das Skript vom Terminal ausgeführt, aber nicht von meinem PHP?
Hat Ihr Superuser ein Passwort?
– G_hi3
4. August 15 um 14:01 Uhr
Sie können sudo nicht von einem PHP-Skript aus verwenden. Apache wird von einem Benutzer ausgeführt (www-data im Allgemeinen), also bearbeiten Sie diese Datei: /etc/sudoers
Fügen Sie dann diese Zeile hinzu:
www-data ALL=(ALL) NOPASSWD:ALL
Pflege ! Dadurch werden alle Funktionen autorisiert, von einem PHP-Skript aufgerufen zu werden. Sie können das Ändern von “ALL” durch Ihr Skript oder Ihren Python-Befehl anpassen.
Präzisieren Sie dann Ihren Benutzer in Ihrem exec-Befehl:
Entfernt dies Passwörter? Weil ich den Serverport öffentlich weitergeleitet habe. Ich möchte nicht, dass jemand einfach meinen Server betritt.
– Mollige Schokolade
4. August 15 um 14:33 Uhr
Es wird das Passwort des Benutzers www-data entfernen, deshalb können Sie NOPASSWD nach einem Befehl fragen, wie z NOPASSWD:python. Es wird nichts für andere Benutzer ändern.
– Vinzenz Decaux
4. August 15 um 14:57 Uhr
Ok, ich bin kein Experte, ich wollte nur sicherstellen, dass sich niemand als Superuser oder irgendein anderer Benutzer in meine Himbeere hacken kann.
– Mollige Schokolade
4. August 15 um 15:01 Uhr
Dies erlaubt die Verwendung von sudo ohne Passwort, nur der Benutzer www-data. Dieser Benutzer kann keine Verbindung über SSH herstellen, also kein Risiko.
– Vinzenz Decaux
4. August 15 um 15:15 Uhr
sudo www-data ohne Passwort ist überhaupt nicht sicher. Es geht nicht um SSH, es geht um Nginx, Apache2 oder etc.. Wenn einer der Server ausgenutzt wurde, kann er Remote-Befehle ausführen. Wenn ja root Privileg, manche glücklich, manche traurig. Es passiert immer.
Auf einer älteren Raspbian-Distribution müssen Sie Ihre Datei einfügen /var/www/file.py. Also fügst du in deiner file.php hinzu:
{
exec("sudo python /var/www/file.py");
}
Auf einem neueren Raspbian Jessie müssen Sie Ihre Datei dort ablegen /var/www/html/file.py, also müssen Sie in Ihrer file.php Folgendes hinzufügen:
{
exec("sudo python /var/www/html/file.py");
}
Oder einfach eine Datei.py
<?php
{
exec("sudo python test.py");
}
?>
Hinweis: Damit dies funktioniert, müssen Sie zuerst eine Datei bearbeiten, um diese Zeilen hinzuzufügen, um passwortloses sudo zu ermöglichen
sudo nano /etc/sudoers
Gehen Sie dann nach unten und fügen Sie dies hinzu
pi ALL=(ALL) NOPASSWD: ALL<br>
www-data ALL=(ALL) NOPASSWD: ALL
Fügen Sie niemals www-Daten zu Sudoern mit hinzu NOPASSWD: ALL! Dies kann zu einem sehr großen Sicherheitsproblem werden. Siehe den Kommentar von @dotslash oben
– Dartmouth
18. Dezember 16 um 17:31 Uhr
Ja, kann, wenn es online ist, ist dieses Pi nur eine Hausfernbedienung, das ist alles. Für die Leute, die das lesen, tun Sie dies nicht, um das Internet zu kontrollieren
– Code1
13. Januar 17 um 15:37 Uhr
So? Wenn es mit einem Netzwerk verbunden ist, kann es kompromittiert werden, wenn sich jemand nur genug Mühe gibt. Tu es einfach nicht. Es gibt bessere Wege, wie die Antwort von Alberto Pagani.
– Dartmouth
13. Januar 17 um 16:38 Uhr
.
5222700cookie-checkFühren Sie das Python-Skript von Php ausyes
Hat Ihr Superuser ein Passwort?
– G_hi3
4. August 15 um 14:01 Uhr