Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/11/2008, à 15:36

zn415

Programme c depuis php

J'essai de lancer un programme en c depuis php sans resultat.

mon code php est celui-ci:

$commande="sudo ./test2.exe user add";
$result=exec($commande);
echo $result;

mon programme en c est celui ci, il est bien executable:

#include <stdio.h>


//argv[1] ---> nom d'user
//#argv[2] ---> add, supp

//utilisation:  ./test.exe sousou add






int main(int argc, char* argv[]){

char chemin[100];

if ( strcmp(argv[2],"add")==0 ){
 sprintf(chemin,"/etc/vsftpd/vsftpd_user_conf/%s",argv[1]);

 FILE *fichier = fopen (chemin, "w");
   if (fichier != NULL){
      fprintf ( fichier , "anon_world_readable_only=NO \n");
      fprintf ( fichier , "local_root=/home/virtual/%s \n" , argv[1] );
      fprintf(fichier, "write_enable=YES \n" );
      fprintf(fichier, "anon_upload_enable=YES \n" );
      fprintf(fichier, "anon_mkdir_write_enable=YES \n" );
      fprintf(fichier,"anon_other_write_enable=YES" );
      fclose ( fichier);
   }else{
      perror("erreur d'ouverture");
   }   
}else{

perror("Specifier parametre 2 (add, supp ) ");

}

J'ai essayé différentes combinaisons mais mon programme en c ne cree pas le fichier dans le repertoire /etc/vsftpd/vsftpd_user_conf alors qu'il fonctionne si je lance le programme en c depuis la console.


Qui peut le plus, peut le moins

Hors ligne

#2 Le 02/11/2008, à 15:39

Faith

Re : Programme c depuis php

Ce ne serait pas le "sudo" qui pose problème ?

Hors ligne

#3 Le 02/11/2008, à 15:43

zn415

Re : Programme c depuis php

J'ai essayé sans et avec mais ça ne donne rien,(j'ai mis un mot de passe pour le compte root , ça a peut etre une influence)

Dernière modification par zn415 (Le 02/11/2008, à 15:43)


Qui peut le plus, peut le moins

Hors ligne

#4 Le 02/11/2008, à 15:47

zn415

Re : Programme c depuis php

Je precise que j'arrive a executer ceci avec succé par exemple:

<?php
$data = shell_exec('uptime');
$uptime = explode(' up ', $data);
$uptime = explode(',', $uptime[1]);
$uptime = $uptime[0].', '.$uptime[1];
echo (''.$uptime.'');
?>

Je viens d'esssayer un autre programme en c et lui fonctionne avec php, je me demande si il n'y aurait pas une histoire de path a spécifier?

Dernière modification par zn415 (Le 02/11/2008, à 16:23)


Qui peut le plus, peut le moins

Hors ligne

#5 Le 02/11/2008, à 16:22

rniamo

Re : Programme c depuis php

pourquoi pas utilise du code php pour faire ce que fait ton programme c ?

Dernière modification par rniamo (Le 02/11/2008, à 16:22)


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne

#6 Le 02/11/2008, à 16:26

zn415

Re : Programme c depuis php

Parce que je pense pas que ce soit une bonne idee que php écrive dans le répertoire /etc/vsftpd/vsftpd_user_conf, J'avais vu sur un post que quelqu'un disais qu'il etait bien de faire une pipeline de manière a isoler php avec le reste afin d'éviter les risques de piratages...


Qui peut le plus, peut le moins

Hors ligne

#7 Le 02/11/2008, à 17:01

rniamo

Re : Programme c depuis php

c'est pas mieux ... il te faut les droits de toute façon

edit : tu as les droits d'ailleurs ? normalement ton fopen rate ....

Dernière modification par rniamo (Le 02/11/2008, à 17:08)


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne

#8 Le 02/11/2008, à 17:56

zn415

Re : Programme c depuis php

Le probleme vient surement de la. Je sais pas si j'ai les droits. Logiquement php execute le scripte c avec les droit www-data .

Je sais pas comment proceder alors? est ce que je modifie le repertoire de maniere a ce que www-data ai le droit d'ecrire dessus (en changent le groupe)? Je voudrais connaitre la meilleur methode sachant qu'on peut faire de differentes façon.

Je viens de faire un test en fesant 

chown www-data:www-data vsftpd_user_conf

mon programme arrive maintenant a écrire mais la configuration n'est pas pris en compte par vsftpd car le fichier possède les droits www-data alors qu'il attend root


Quelle methode est la bonne?

Dernière modification par zn415 (Le 02/11/2008, à 17:57)


Qui peut le plus, peut le moins

Hors ligne

#9 Le 02/11/2008, à 18:38

zn415

Re : Programme c depuis php

Je viens de trouver, il suffit de mettre setuid setgid à 1 sur le fichier c et ça fonctionne.


Qui peut le plus, peut le moins

Hors ligne