suPHP / PHP / SSH

suPHP / PHP / SSH - PHP - Programmation

Marsh Posté le 06-05-2008 à 17:51:45    

Bonjour à tous  :) ,

 

Voici la situation : Je fais un stage dans lequel je développe une interface web qui doit permettre d'utiliser un programme hébergé sur une machine distante du serveur PHP.
Pour ce faire j'utilise des commandes SSH dans du code PHP. Le problème est que lorsque le ssh est exécuté par PHP l'utilisateur alors considéré est "nobody" (celui d'Apache) et non pas l'utilisateur du serveur qui heberge le serveur apache.
C'est pour cela que j'ai fait installé suPHP (ce n'est pas moi qui l'ai fait). On m'a dit que normalement il a été installé.
Voici la config actuelle (phpinfo() ) :
C'est à partir de la que j'ai besoin de vous :
1) Je voudrais vérifier que suPHP a été correctement installé.

 

2) Je voudrais savoir comment utiliser suPHP et établir un code php qui démontre que celui-ci est utilisé.
(Je dois vraiment avoir du mal parce que j'ai cherché plusieurs heures sur le net pour au final ne rien comprendre. Faut dire que je débute dans le monde linux  :sweat: )
   
3) Faire marcher mon code : Ci dessous est la partie php qui est sensée exécuté le ssh

 

"ssh.php" :
<? php
$web_server_ip = '192.168.1.140';    // Ip du serveur web (qui heberge le serveur apache et "ssh.php" )
$web_user_name = 'sarah';  // Utilisateur serveur web
$hpc_ip = '192.168.1.1';    // Ip de la machine qui heberge le programme de calcul
$hpc_user_name = 'anais';

 

//echo 'hello from ssh.php</br>';

 

$cmd_ssh = "ssh sarah@192.168.1.1 mkdir hello)";
$a = system($cmd_ssh,$res);   //exécute commande $cmd et récup le résultat dans $res
if ($res == 0 ){
 echo '</br>ssh execute';
}
else {
 echo '</br>ssh non execute';
}
?>

 

Un système de clé publique/privé a été mis en place afin de permettre a sarah d'aller sur anais sans utiliser de mot de passe. Ce système fonctionne (crée et testé avec "Putty" )

 


Le but de ce code est juste de pouvoir créer un dossier dans la racine de anais depuis du code php hébergé sur sarah.
suPHP permettrait donc d'exécuter les commandes ssh en tant que sarah et non plus nobody, si ceci est réllement le cas le dossier "hello" devrait être créer.
Remarque la même manip marche depuis Putty

 

Merci par avance si certains peuvent m'aider.
Mon problème paraitra bete pour certains mais je rappelle que je ne connais quasiment rien en linux.

 

Cordialement  :hello: ,

 

2dt3nS


Message édité par 2dt3ntion le 07-05-2008 à 09:20:19
Reply

Marsh Posté le 06-05-2008 à 17:51:45   

Reply

Marsh Posté le 07-05-2008 à 09:23:14    

Up Up :)
petite précisions ( phpinfo()
- php version 4.2.2
- apache version 2.0
 )  
 
Quelqu'un s'il vous plait... ?

Reply

Marsh Posté le 07-05-2008 à 11:12:23    

1) avec phpinfo tu regardes si mod_suphp est présent dans les modules apache
2) tu as juste à changer le propriétaire du script
 
normalement pas besoin de suphp vu que tu spécifies l'utilisateur dans la commande ssh
tu as un message d'erreur ? (tu peux si besoin rediriger le flux stderr vers stdout en ajoutant à la fin de ta commande 2>&1)
 

Reply

Marsh Posté le 07-05-2008 à 15:55:25    

Merci de vos réponses
 
NazzTazz :  
Ce que tu viens de me montrer a l'air génial. Cependant la librairie ssh2 n'est pas installé sur le serveur, je vais voir pour la faire installer.
Remarque : je n'utilise pas exec() mais system().
 
soju:
1) J'ai regardé dans le phpinfo() et pas de suPHP dans les modules apache :(
 
Oui je spécifie l'utilisateur dans la commande mais parce qu'elle est exécuté sous php, c'est l'utilisateur "nobody" qui vient remplacer celui que je renseigne :@ d'où l'utilisation requise de suPHP...
Enfin quand j'exécute mon bout de code, non je n'ai pas de message d'erreur. Par contre $a = false et $res = 255. J'aicherché la signification pour une valeur retour égale à 255 et je n'ai pas trouvé d'explication.
De plus je n'ai pas compris "rediriger le flux stderr vers stdout" ni ce à quoi cela pouvait servir. Tu peux m'expliquer s'il te plait ?
 
Du coup je pense que le problème majeur réside dans l'installation de suPHP, et vu que je n'y connait rien en Linux...
Z'auriez pas un expert sous la main ? :) qui puisse me guider dans l'installation parce que j'ai regardé la doc complète sur le site suphp et il y a trop de chose que je ne comprend pas...pfff
 
Any idea?

Reply

Marsh Posté le 07-05-2008 à 16:24:59    

récupère le message d'erreur avant tout :

Code :
  1. exec('ssh sarah@192.168.1.1 mkdir hello 2>&1', $output);
  2. print_r($output);


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed