So führen Sie Systemdienste aus, indem Sie eine Anfrage über den Browser senden

463
Ahmad Karim

Ich möchte eine Schnittstelle erstellen, die der eines dsl-Routers ähnelt, in der Sie die Netzwerkeinstellungen im Browser bearbeiten und den Router mit den neuen Einstellungen neu starten können. Ich möchte einige Einstellungen im Browser bearbeiten und einen systemd-Dienst über eine Schaltfläche oder ähnliches ausführen. Ich möchte zB ein HTML-Formular an ein Python-CGI-Skript senden, das dann die Datei eth1.network ändert und den networkd-Dienst neu startet. Ich habe ein Embedded Linux-Gerät, auf dem der Apache-Webserver ausgeführt wird.

Das Problem ist: Apache-Webbenutzer dürfen keine Systemdienste starten / stoppen, und natürlich möchte ich nicht zulassen, dass die WWW-Daten systemd-Dienste starten / stoppen.

  • Wie kann ich systemd-Dienste über den Browser starten / stoppen, ohne Rootberechtigungen für den www-data-Benutzer zuzulassen. Ich weiß, dass der Webserver aus Sicherheitsgründen niemals auf Dienste oder außerhalb des Stammordners 'var / www /' zugreifen darf.

  • Wie schafft ein DSL-Router das? Eine Lösung, die ich gefunden habe, ist hier Ist es sicher zuzulassen, dass www-data privilegierte Befehle ausführt, aber ich weiß nicht, wie ich das implementieren kann. Ich würde mich über jeden Leitfaden oder Beispiele freuen.

0

1 Antwort auf die Frage

0
Alex

Lassen Sie NICHT zu, dass privilegierte Befehle ausgeführt werden, indem Sie sie dem wilden Internetbenutzer zur Verfügung stellen www-data. Es ist eine Möglichkeit, nach Ärger zu suchen.

Sie können das URL-Klopfen für solche Dinge verwenden. Sie können eine geheime URL erstellen und auf dem Server kontinuierlich die Änderungen überwachen, mit tail -fdenen die Protokolldatei von Apache nicht geladen wird, da der Server nicht verwendet wird, da er die Inotify- Funktion des Kernels verwendet . Wenn Sie Ihre geheime URL aufrufen, wird ein Skript (egal ob Shell, Python usw.), das unter einem privilegierten Konto ausgeführt wird, eine einzelne Aufgabe ausführen. Im Grunde handelt es sich also um eine Art IPC zwischen unprivilegierten Benutzern und Operationen, die mit den höchsten Berechtigungen (root?) Ausgeführt werden müssen. Sie sollten einen Authentifizierungsmechanismus implementieren, um diese geheime URL zu schützen, um DDoS zu vermeiden. Wenn Sie HTTPS für solche Dinge verwenden würden, wäre Ihre geheime URL nicht mit man-in-a-middle verbunden .