staging.inyokaproject.org

Bash-Python3-Script über PHP starten, welches nicht im Kontext von sudo läuft

Status: Ungelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

halloICKEbins

Avatar von halloICKEbins

Anmeldungsdatum:
12. September 2017

Beiträge: 226

Gibt es eine Möglichkeit mittels PHP(Apache2) eine Script (Python3 / BASH) auf einem Server auszuführen, welches nicht über die /etc/sudoers läuft sondern im Kontext eines Benutzers, also ohne sudo?

NORACSA

Anmeldungsdatum:
31. Januar 2010

Beiträge: 182

Du kannst einfach einen Interpreter-Prozess starten und diesem das Script als Parameter mitgeben. Wieso es überhaupt im sudo-Kontext laufen sollte ist mir ein Rätsel!

halloICKEbins

(Themenstarter)
Avatar von halloICKEbins

Anmeldungsdatum:
12. September 2017

Beiträge: 226

Weil leider bis jetzt alle meine Versuche ein Script zu starten fehlgeschlagen sind!

1
2
$command = ('python3 my_script.py');
$output = shell_exec($command. " > /dev/null &");

Mir fehlt hier der Ansatz bzw. das Wissen!? Natürlich würde ich es gerne nur im eingeschränkten Nutzerkontext ausführen wollen!

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6532

Natürlich würde ich es gerne nur im eingeschränkten Nutzerkontext ausführen wollen!

Ich habe mit PHP jetzt lange nicht mehr gemacht, aber Du kannst davon ausgehen, das alles was darüber gestartet wird, mit den Rechten von www-data passiert.

Und das könnte auch schon das erste Problem sein, denn www-data hat keine Konsole und auch ein anderes Enrironment ($PATH).

Bei meinen Versuchen mit Bash Scripten zur HTML Erzeugung, habe ich diese über die CGI Schnittstelle gestartet. Dazu musste ich dem Server (Lighttpd) aber noch mitteilen dass er diese Scripte überhaupt ausführen darf.

Bekommst Du denn eine Fehlermeldung?

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Einfach PHP runterwerfen und das Backend komplett in Python schreiben, dann ist es kein Problem Python-Code auszuführen 😛

halloICKEbins schrieb:

Weil leider bis jetzt alle meine Versuche ein Script zu starten fehlgeschlagen sind!

1
2
$command = ('python3 my_script.py');
$output = shell_exec($command. " > /dev/null &");

Immer mit absoluten Pfaden arbeiten bzw. überprüfen, ob das Arbeitsverzeichnis deines PHP-Skripts das ist, für das du es hältst.

Mir fehlt hier der Ansatz bzw. das Wissen!? Natürlich würde ich es gerne nur im eingeschränkten Nutzerkontext ausführen wollen!

Worauf du achten musst ist AppArmor und die PHP-Konfiguration - standardmäßig ist der Apache soweit ich das in Erinnerung habe recht restriktiv abgesichert und die Laufzeit und eventuell auch andere Ressourcen (wie der zur Verfügung stehende RAM) für PHP-Skripte (und die von ihnen ausgeführten Programme) beschränkt. Die Fehlermeldungen müsste man aber spätestens dann sehen, wenn man extensiv loggen lässt.

Antworten |