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

Linux Discussion :

Exécuter un script shell depuis php


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Par défaut Exécuter un script shell depuis php
    salut j'ai un script shell pour créer des utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #! /bin/bash
    useradd $1 -g $2
    je fais ./shell.sh user1 group1 et il est créé

    mais depuis mon script php :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    exec ('./shell.sh user2 group1');
    ?>

    je lance la page mais la création de user2 ne passe pas

    alors je voudrais savoir s'il me faut un rpm sur mon redhat pour que php exécute les commande shell ?
    Et ce qu'il faut donner comme autorisations à l'utilisateur pour que le script soit exécuté ? Et comment ?
    Et ce que c'est possible d'écrire le script shell au milieu de la page php sachant que j'ai déjà essayé mais en vain ?
    merci à vous.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par allyass Voir le message
    salut j'ai un script shell pour créer des utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #! /bin/bash
    useradd $1 -g $2
    je fais ./shell.sh user1 group1 et il est créé

    mais depuis mon script php :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    exec ('./shell.sh user2 group1');
    ?>

    je lance la page mais la création de user2 ne passe pas
    Pour que la commande "useradd" fonctionne, il faut qu'elle soit lancée par root. Or un script php est exécuté par le serveur Apache qui est un utilisateur comme un autre (ses droits sont définis dans "/etc/httpd/conf/httpd.conf").

    Donc pour que ça marche, t'as deux solutions
    - tu modifies le propriétaire du process httpd et tu le mets à root => hyper unsecure => si un hackeur arrive à rentrer sur httpd il aura les droits de root
    - tu crées un exécutable issu d'un source C qui va lancer le useradd. Ca peut-être un source de ce type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <stdio.h>
     
    int main(int argc, char *argv[])
    {
         char cmd[1024];
         sprintf(cmd, "useradd %s -g %s", argv[1], argv[2]);
         system(cmd);
    }
    Et tu places cet exécutable dans ta machine en lui mettant le setuid root. Puis tu modifies ton script pour qu'il vienne appeler cet exécutable au lieu de ton shell.

    Citation Envoyé par allyass Voir le message
    Et ce que c'est possible d'écrire le script shell au milieu de la page php sachant que j'ai déjà essayé mais en vain ?
    merci à vous.
    Aucun problème. Mais si ton script ne peut pas travailler par manque de droits php n'y pourra rien.

    Citation Envoyé par allyass Voir le message
    Et ce qu'il faut donner comme autorisations à l'utilisateur pour que le script soit exécuté ?
    Faut bien comprendre le fonctionnement Unix. Un script shell n'est jamais exécuté. Il n'est qu'interprété par l'exécutable inscrit derrière le "#!". La preuve: tu lui enlèves le droit "x" => tu peux quand-même le lancer en tapant "sh nom_script_shell".
    Or seul un exécutable peut avoir des droits modifiés par le setuid et comme un script n'est pas un exécutable...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Exécuter un script PowerShell depuis PHP
    Par user007 dans le forum Langage
    Réponses: 7
    Dernier message: 07/04/2014, 16h05
  2. Exécution de script shell via PHP
    Par Sayko dans le forum Langage
    Réponses: 1
    Dernier message: 13/03/2013, 23h17
  3. Exécuter un script VB depuis PHP
    Par rolintoucour dans le forum VBScript
    Réponses: 0
    Dernier message: 26/03/2012, 08h44
  4. Exécuter un script python depuis PHP
    Par Fawn_noOb_wxPython dans le forum Langage
    Réponses: 4
    Dernier message: 20/10/2008, 13h27
  5. Réponses: 8
    Dernier message: 27/07/2006, 09h40

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