Posté par fabien .
En réponse au message Droits serveur PHP.
Évalué à 3.
Dernière modification le 23 octobre 2012 à 17:40.
Bon, voilà un truc, sur mon php j'appelle : exec('./prog'); qui est un binaire ayant le setuid (debian ne permet plus de le faire manuellement, donc c'est dans le code!),
J'utilise donc ce programme pour lancer un binaire qui a besoin d'être root (pâr exemple, chez moi un script bash, pour lire des log systeme… mais tu peut l'adapter pour qu'il envoie un signal)
ce petit 'prog' est en quelque sorte un proxy : tu l'execute en tant que user (donc www-data par exemple), et il execute un truc en tant que root pour toi.
facile…
voilà.
#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <unistd.h>// 1. compiler gcc prog.c -o prog// 2. changer le proprio ==> chgrp root prog// 3. setuid : chmod 4755 prog// 4. lancer ./progintmain(){setuid(0);system("/un/truc");// le truc a lancer en tant que rootreturn0;}
[^] # Re: Des autres approches
Posté par fabien . En réponse au message Droits serveur PHP. Évalué à 3. Dernière modification le 23 octobre 2012 à 17:40.
Bon, voilà un truc, sur mon php j'appelle : exec('./prog'); qui est un binaire ayant le setuid (debian ne permet plus de le faire manuellement, donc c'est dans le code!),
J'utilise donc ce programme pour lancer un binaire qui a besoin d'être root (pâr exemple, chez moi un script bash, pour lire des log systeme… mais tu peut l'adapter pour qu'il envoie un signal)
ce petit 'prog' est en quelque sorte un proxy : tu l'execute en tant que user (donc www-data par exemple), et il execute un truc en tant que root pour toi.
facile…
voilà.