2011-01-13 2 views
3

J'ai reçu un projet récemment et je me demande comment faire quelque chose de manière correcte et sécurisée.Modification des fichiers de configuration système et utilisation des commandes système via l'interface Web

La situation est la suivante:

Il y a des classes pour gérer les utilisateurs de Linux, les utilisateurs de MySQL et des bases de données et des hôtes virtuels apache. Ils sont utilisés pour automatiser l'ajout d'utilisateurs dans un petit environnement d'hébergement partagé. Ces classes sont ensuite utilisées dans les scripts de ligne de commande pour offrir une interface agréable à l'administrateur système.

Je suis maintenant invité à construire une interface Web simple pour offrir une interface graphique à l'administrateur, puis offrir certaines fonctionnalités directement aux utilisateurs (changer leur mot de passe UNIX et d'autres procédures quotidiennes).

Je ne sais pas comment implémenter l'application web. Il s'exécutera dans Apache (avec l'utilisateur apache) mais les classes doivent accéder aux fichiers et commandes qui ne sont utilisables que par l'utilisateur root pour effectuer les changements nécessaires (par exemple les fichiers de configuration hostsadd et virtual hosts). Lorsque vous utilisez les scripts de ligne de commande, ce n'est pas un problème car ils sont exécutés sous l'utilisateur correct. Donner des autorisations à l'utilisateur Apache serait probablement dangereux.

Quelle serait la meilleure technique pour permettre cela à travers l'application web? Je voudrais utiliser les classes directement si possible (cela serait plus pratique que d'appeler les scripts en ligne de commande comme les processus externes et la sortie d'analyse) mais je ne vois pas comment le faire de manière sécurisée.

J'ai vu des produits existants faire des choses similaires (webmin, eBox, ...) mais je ne sais pas comment cela fonctionne. PS: Les classes que j'ai reçues sont simples mais vraiment mal programmées et à peine commentées. Ils sont en fait en PHP mais je prévois de les porter en python. Ensuite, j'aimerais utiliser l'infrastructure Django pour créer l'interface d'administration Web.

Merci et désolé si la question n'est pas assez claire.

EDIT: J'ai lu un peu à propos de webmin et vu qu'il utilise son propre mini serveur web (appelé miniserv.pl). Cela semble être une bonne solution. L'utilisateur exécutant ce serveur devrait alors avoir des permissions pour modifier les fichiers et utiliser les commandes. Comment pourrais-je faire quelque chose de similaire avec Django? Utilisez le serveur de développement? Serait-il préférable d'utiliser quelque chose comme CherryPy?

Répondre

0

Bonjour Vous pouvez facilement créer des applications Web en Python en utilisant des frameworks Web conformes à WSGI tels que CherryPy2 et des moteurs de modèles tels que Genshi. Vous pouvez utiliser le module 'subprocess' pour gérer les commandes externes ...

0

Vous pouvez utiliser sudo pour accorder à l'utilisateur root apache l'autorisation de n'utiliser que les commandes/scripts dont vous avez besoin pour votre application Web.

Questions connexes