2011-01-13 3 views
3

Ich habe kürzlich ein Projekt erhalten und frage mich, wie ich etwas auf korrekte und sichere Weise tun kann.Ändern von Systemkonfigurationsdateien und Verwenden von Systembefehlen über die Webschnittstelle

Die Situation ist folgende:

Es gibt Klassen Linux-Anwender, MySQL-Benutzer und Datenbanken und Apache virtuelle Hosts zu verwalten. Sie werden verwendet, um das Hinzufügen von Benutzern in einer kleinen Shared-Hosting-Umgebung zu automatisieren. Diese Klassen werden dann in Befehlszeilenskripten verwendet, um dem Systemadministrator eine nette Schnittstelle zu bieten.

Ich werde jetzt gebeten, eine einfache Webschnittstelle zu erstellen, um dem Administrator eine GUI zu bieten und dann einige Funktionen direkt den Benutzern anzubieten (ändern Sie ihr Unix-Passwort und andere tägliche Prozeduren).

Ich weiß nicht, wie Sie die Webanwendung implementieren. Es wird in Apache (mit dem Apache-Benutzer) ausgeführt, aber die Klassen müssen auf Dateien und Befehle zugreifen, die nur vom Root-Benutzer verwendet werden können, um die notwendigen Änderungen vorzunehmen (z. B. Konfigurationsdateien für useradd und virtuelle Hosts). Bei Verwendung der Befehlszeilenskripts ist dies kein Problem, da sie unter dem richtigen Benutzer ausgeführt werden. Es wäre wahrscheinlich gefährlich, dem Apache-Benutzer Berechtigungen zu erteilen.

Was wäre die beste Technik, um dies durch die Webanwendung zu ermöglichen? Ich würde die Klassen gerne direkt verwenden (es wäre praktischer, als die Befehlszeilenskripte wie externe Prozesse aufzurufen und die Ausgabe zu parsen), aber ich kann nicht sehen, wie dies auf eine sichere Art und Weise zu tun ist.

Ich sah bestehende Produkte tun ähnliche Dinge (Webmin, eBox, ...), aber ich weiß nicht, wie es funktioniert.

PS: Die Klassen, die ich erhielt, sind einfach, aber sehr schlecht programmiert und kaum kommentiert. Sie sind eigentlich in PHP, aber ich plane, sie nach Python zu portieren. Dann möchte ich das Django-Framework verwenden, um die Web-Admin-Schnittstelle zu erstellen.

Danke und Entschuldigung, wenn die Frage nicht klar genug ist.

EDIT: Ich habe ein wenig über Webmin gelesen und sah, dass es einen eigenen Mini-Webserver (genannt miniserv.pl) verwendet. Es scheint eine gute Lösung zu sein. Der Benutzer, der diesen Server ausführt, sollte dann berechtigt sein, die Dateien zu ändern und die Befehle zu verwenden. Wie könnte ich etwas Ähnliches mit Django machen? Benutze den Entwicklungsserver? Wäre es besser, etwas wie CherryPy zu verwenden?

Antwort

0

Hallo Sie können Web-Anwendungen in Python auf einfache Weise mit WSGI-konformen Web-Frameworks wie CherryPy2 und Templating-Engines wie Genshi erstellen. Sie können das Modul 'Subprocess' verwenden, um externe Befehle zu verwalten ...

0

Sie können sudo verwenden, um dem Benutzer apache root nur die Befehle/Skripts zu erteilen, die Sie für Ihre Webanwendung benötigen.

Verwandte Themen