Linux droit d'execution sur un prog via php

Bonjour,

J'essaie depuis php de pouvoir démarrer, stopper, redémarrer un programme avec un script php, mais il y a un problème de droit.

Code php
          <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"> 
  <head> 
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> 
    <title>Application</title> 
  </head> 
  <body> 
    <p><br /> 
    </p> 
    <p></p> 
    <table border="1" style="width: 100%"> 
      <tbody> 
        <tr><td>Amule<br /> 
          </td> 
          <td><form method="post" 
 action="" name="Application1-On"><input name="Application1-On" value="Démarrer" type="submit"><br /> 
          </td> 
          <td><form method="post" 
 action="" name="Application1-Off"><input name="Application1-Off" value="Arrêter" type="submit"><br /> 
          </td> 
          <td><form method="post" 
 action="" name="Application1-Off"><input name="Application1-re" value="Redémarrer" type="submit"><br /> 
          </td> 
        </tr> 
      </tbody> 
    </table> 
<?php 

if (isset($_POST['Application1-On'])){ 

$commande = "/etc/init.d/amule-daemon start"; 
exec("$commande", $top, $error ); 
echo nl2br(implode("\n",$top)); 
if ($error){ 
    exec('/usr/bin/top n 1 b 2>&1', $error ); 
    echo "Error: "; 
    exit($error[0]); 
} 
} 
?>  
    <p><br /> 
    </p> 
  </body> 
</html>


/var/log/apache2/error.log
root@debian:# cat /var/log/apache2/error.log 
sh: /etc/init.d/service: not found 
start-stop-daemon: unable to set gid to 1000 (Operation not permitted)


Comment puis je faire ?

Merci.

3 réponses

  1. Salut,

    En effet il faut être root pour cela... Ou alors en rajoutant www-data dans les sudoers (fichier dans /etc/sudoers)
    1. Bonjour,

      Je n'ai pas /etc/sudoers ???
      serveur@debian:~$ ls -alF /etc/sudoers   
      ls: impossible d'accéder à /etc/sudoers: Aucun fichier ou dossier de ce type   
      Vous avez du nouveau courrier dans /var/mail/serveur   
      serveur@debian:~$ 


      Dans "/etc/init.d" J'ai copier "amule-daemon" en "service-amule-daemon"
      cp -v /etc/init.d/amule-daemon /etc/init.d/service-amule-daemon

      puis j'ai fait :
      chmod u+s /etc/init.d/service-amule-daemon

      Mais c'est bizarre j'ai le même message, logiquement la commande devrai être exécutée avec les permissions root. ?

      root@debian:# ls -alF /etc/init.d/am*  
      -rwxr-xr-x 1 root root 2554  4 juin   2010 /etc/init.d/amule-daemon*  
      root@debian:# ls -alF /etc/init.d/ser*  
      -rwsrwsrwt 1 root root 2554  2 août  19:23 /etc/init.d/service-amule-daemon*  
      root@debian:# 


      Merci.
      1. Essaie de te logger en root et de taper : visudo

        C'est étrange que tu n'aies pas ce fichier.
    2. bonjour,

      Y a pas le fichier ???
      root@debian:# visudo
      -bash: visudo : commande introuvable
      root@debian:# 
      1. Hm, étrange. Est-ce tu as le paquet "sudo" d'installé ?