Pages : 1
#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
Pages : 1