Page 1 sur 1
[PHP] exécuter commande root avec exec [Résolu]
Publié : mar. 30 oct. 2012, 17:59
par mauribilis
bonjour,
je tourne avec lighttpd, je voudrais exécuter une commande root avec exec
mais ça me retourne l'erreur suivante
je ne dois pas avoir les autorisations.
comment faire ?
merci d'avance
Re: [PHP] exécuter commande root avec exec
Publié : mar. 30 oct. 2012, 20:03
par benjarobin
Lancer un programme en C qui est setuid, c'est ce qu'il y a de plus simple
Re: [PHP] exécuter commande root avec exec
Publié : jeu. 01 nov. 2012, 22:37
par mauribilis
salut la compagnie,
j'ai fais mon programme c il marche, je l'ai testé en ligne de commande mais pas avec php le setuid ne doit pas êtrm
mon c
Code : Tout sélectionner
int main(int argc, char *argv[])
{
system("echo 1 > /sys/class/gpio/gpio65/value");
return 0;
}
mon php
pour le setuid j'ai fais chmod ug+s et chmod u+s et chmod g+s sur mon programme compilé mais php dit toujours "Permission denied"
Re: [PHP] exécuter commande root avec exec
Publié : jeu. 01 nov. 2012, 23:43
par benjarobin
Il ne faut pas faire ceci... Demain je te donnerai le code
Sinon ton programme doit appartenir a l'utilisateur root
Re: [PHP] exécuter commande root avec exec
Publié : ven. 02 nov. 2012, 12:38
par benjarobin
Code : Tout sélectionner
#include <stdio.h>
#define GPIO_FILE "/sys/class/gpio/gpio65/value"
int main(void)
{
int ret = 0;
FILE *f = fopen(GPIO_FILE, "w");
if (f != NULL)
{
if (fputs("1\n", f) <= 0)
{
perror("Fail to write to: " GPIO_FILE);
ret = 2;
}
}
else
{
perror("Fail to open: " GPIO_FILE);
ret = 1;
}
return ret;
}
Compilation:
En root :
Php :
Re: [PHP] exécuter commande root avec exec
Publié : ven. 02 nov. 2012, 20:59
par mauribilis
merci beacoup ça marche ! mais comment faire au lieu de echo (écrire) un cat (lire la valeur)
Re: [PHP] exécuter commande root avec exec
Publié : ven. 02 nov. 2012, 21:42
par benjarobin
fread ? fscanf ?
Tout dépend ce que tu veux faire

Mais tu n'as pas besoin des droits root pour la lecture
Re: [PHP] exécuter commande root avec exec
Publié : ven. 02 nov. 2012, 22:03
par mauribilis
je suis pas très sûr de mon code :
Code : Tout sélectionner
#include <stdio.h>
#define GPIO_FILE "/sys/class/gpio/gpio65/value"
int main(void)
{
int ret = 0;
FILE *f = fopen(GPIO_FILE, "r");
fscanf(f, "%d", &GPIO_FILE);
printf ("Valeur lu : %d\n", GPIO_FILE);
fclose(f);
return ret;
}
Re: [PHP] exécuter commande root avec exec
Publié : ven. 02 nov. 2012, 22:31
par benjarobin
Hum c'est faux, d'ailleurs cela ne devrait pas compiler, mais encore une fois sans savoir ce que tu veux faire... De plus pourquoi ne pas utiliser cat ?
Re: [PHP] exécuter commande root avec exec
Publié : ven. 02 nov. 2012, 23:22
par mauribilis
cat /sys/class/gpio/gpio65/value est une ligne de commande doi-je exécuter cette ligne de commande dans un code c ?
Re: [PHP] exécuter commande root avec exec
Publié : sam. 03 nov. 2012, 10:45
par benjarobin
... Je ne comprend vraiment pas ce que que tu veux faire... Peux tu développer
Pourquoi ne pas faire simplement
Pourquoi vouloir faire un code C ?!
Re: [PHP] exécuter commande root avec exec
Publié : sam. 03 nov. 2012, 12:57
par mauribilis

ah oui je n’avais plus pensais qu'une simple lecture nécessite pas de droit setuid, comment fait-on pour mettre le sujet en résolu ?
Re: [PHP] exécuter commande root avec exec
Publié : sam. 03 nov. 2012, 14:04
par benjarobin
Il faut éditer ton premier message