IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

accéder à des fonctions avancées (root) à partir d'une page PHP


Sujet :

Apache

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 54
    Points : 41
    Points
    41
    Par défaut accéder à des fonctions avancées (root) à partir d'une page PHP
    Bonjour,

    pour un tout nouveau projet il faut créer à partir de zéro un espèce de webmin en PHP.

    il faut donc pouvoir configurer le réseau, écrire des fichiers de configuration etc.

    Mais mon plus gros problème est le suivant: pour effectuer un changement de configuration il faut être en root.

    du coup la question est: comment peut-on de manière assez sécuriser passer en root à partir d'un script php pour changer la configuration d'un serveur tournant sous linux (debian)?

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    C'est une opération très délicate car si elle est mal faite ou mal contrôlée, c'est porte ouverte à tout sur le serveur. Dans tous les cas, il faut restreindre au maximum ce que peut faire l'utilisateur PHP. Je n'ai pas du tout la solution idéale mais j'ai 2 idées :
    • Utiliser sudo pour lister explicitement les commandes ou scripts exécutables depuis PHP en tant que root. Par exemple, tu veux créer un nouveau point de montage. Tu écris un script create_mount_point.sh exécutable par root qui prend les paramètres qui vont bien et qui fait le boulot. Avec sudo, tu dis que l'utilisateur PHP peut exécuter ce script (et seulement ce script) en tant que root. Dans PHP, tu appelles alors sudo create_mount_point.sh param1 param2.
    • Mettre en place un mécanisme de "job list" : PHP n'a que le droit d'enregistrer qq part une liste d'actions à faire en tant que root. Ensuite, c'est un script (lancé toutes les minutes par cron par exemple) qui examine la liste d'actions et qui les effectue. L'intérêt mais aussi l'inconvénient c'est que l'exécution est asynchrone : quand tu cliques sur le bouton "créer le point de montage", le point de montage ne sera effectivement créé qu'une minute plus tard au maximum.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 54
    Points : 41
    Points
    41
    Par défaut
    merci pour ta réponse !

    je vais essayer avec la commande sudo, ça me semble le mieux car pour les paramètres réseaux il vaut mieux que ce soit instantané comme changement. J'imagine bien les futurs utilisateurs se prendre la tête car les réglages ne se mettent pas à jour assez vite à leurs gouts.

    sinon j'avais mis l'utilisateur apache dans le groupe "root" mais c'est un peu trop barbare!

  4. #4
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 54
    Points : 41
    Points
    41
    Par défaut
    pour utiliser sudo via apache sans devoir introduire le mot de passe user ou root (ce qui pose problème) il faut modifier le fichier /etc/sudoers (à ne faire qu'en root)

    pour y ajouter:

    www-data ALL = NOPASSWD: ALL


    vous avez compris, www-data est l'utilisateur apache sur mon serveur, ça peut varier bien entendu...

    j'espère que ça va aider qq'un d'autre

    bonne journée

  5. #5
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Méfie-toi avec ta config : ça fait un moment que je n'ai pas joué avec sudo mais elle me semble beaucoup trop large : à la lire, j'ai l'impression que www-data peut exécuter toutes les commandes root sans avoir à s'authentifier. C'est relativement dangereux, en fait.

    Petite question au passage : c'est juste un projet d'étude ou c'est prévu d'en faire un vrai produit ditribué ? Si c'est pour distribué, il faudra bien indiqué dans la doc d'install que sudo est un prérequis et qu'il faut le configurer de telle ou telle façon. Dans tous les cas, regarde comment fonctionne les webmins existants et comment ils s'installent.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  6. #6
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 54
    Points : 41
    Points
    41
    Par défaut
    Pour l'instant c'est un projet dans le cadre d'un stage, mais qui sera distribué plus tard.

    Pour le sudo, je sais que ma configuration laisse à désirer en terme de sécurité. Pour bien faire il faudrait spécifier toutes les commandes qu'il faut pour le "webmin" afin de restreindre au maximum.

    Mais comme pour l'instant ça reste en local pour des tests et la mise en place, l'aspect sécurité est un peu bâclé.

    Quand tous les traîtement de chaînes seront mis en place pour les différentes configuration et que ça marchera, il faudra sécuriser sudo, mettre en https etc...

    Sinon pour les curieux sudoers: http://www.sudo.ws/sudo/man/sudoers.html

    EDIT: j'avais oublié de répondre: pour webmin j'ai déjà regardé mais c'est énorme comme projet avec plein de fichiers cgi et de fichiers python dans tous les coins. Je ne m'y suis tellement pas retrouvé dedans que j'ai pris l'initiative de reprendre tout à neuf.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.2] Atteindre une fonction js à partir d'une page PHP
    Par beegees dans le forum Langage
    Réponses: 4
    Dernier message: 16/02/2009, 15h17
  2. generer des graphs birt a partir d'une page web
    Par me_yassine dans le forum BIRT
    Réponses: 3
    Dernier message: 12/05/2007, 23h50
  3. [FPDF] Envoi de mail au format PDF, à partir d'une page PHP
    Par King_T dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 01/05/2006, 23h21
  4. [ezPDF] Ouvrir un pdf à partir d'une page php
    Par aude_1603 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 28/02/2006, 12h06
  5. connection a mssql a partir d'une page php
    Par jean_marc dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/11/2003, 14h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo