| As tu rajouté sudo devant ta commande ?
<?php
$ligne = system('sudo /etc/init.d/smsicomd stop ');
echo $ligne.'<br>';
$ligne1 = system(sudo etc/init.d/'smsicomd start');
echo $ligne1;
?>
J'ai testé avec /etc/init.d/ssh et ça marche chez moi.
;-) Flachy Joe ;-)
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. » Les Shadoks Répondre à Flachy Joe | Flachy, peux tu m'expliquer ces cmd (surtout le REBOOT) du /etc/sudoers.parait qu'à mon niveau , il existe une erreur de syntaxe au niveau de la ligne:
root ALL=(ALL) ALL,
même commenté l'erreur subsiste.
Je me pose aussi la question de savoir s'il était encore nécessaire de préciser cette ligne pour le super user. Répondre à maxabi | L'erreur est à la ligne suivante en fait : www-data ALL = NOPASSWD: REBOOT
Pour l'explication :
Cmnd_Alias définie une liste de commande qui sera valable pour le reste de la config, ici on définie la liste REBOOT qui contient uniquement le script à exécuter.
La ligne www-data ... détermine de quel façon cet utilisateur va pouvoir utiliser sudo : sur toutes les machines accessibles (en fait uniquement localhost...) sans mot de passe et uniquement la liste REBOOT.
Il vaut mieux garder la ligne pour root, qui lui permet de lancer n'importe quelle commande sur n'importe quelle machine, pour peu qu'il fournisse son mot de passe.
;-) Flachy Joe ;-)
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. » Les Shadoks Répondre à Flachy Joe | Merci infiniment merci,
jai une otre inquiétude sur le type d'utilisateur www-data ; o fait c l'utilisateur "apache non? si oui , j'ai comme l'impression que ce dernier est un utilisateur particulier, cad sous lequel on ne peut pas ouvrir une session avec un mot de passe comme c le cas pour les otres user créés.
Puisque sa marche pas encore , j'ai voulu pluto placer mon script shell dans /var/www/cgi-bin. Mais il se fait que par défaut le user apache n'accède pas à ce repertoire. alors je me suis demandé s'il fo aussi le préciser dans le /etc/sudoers? Répondre à maxabi | En effet le user www-data n'a pas de mot de passe (même effet que passwd -d) ce qui interdit son login (c'est aussi ce qu'on fait normalement avec root quand on a sudo correctement configuré cf http://doc.ubuntu-fr.org/root).
Mais ça n'empêche en rien le lancement de script par la méthode que j'ai décrit.
Si ton script est à la bonne place, et ton sudoers correctement configuré, alors tu peux le lancer avec sudo /chemin/absolu/vers/le/script.sh start
Il faut aussi le chemin absolue dans sudoers.
;-) Flachy Joe ;-)
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. » Les Shadoks Répondre à Flachy Joe | Mais jarrive toujours pas.Je me demande si mon code PHP est correcte. Au fait mon smsicomd s'execute en ligne de cmd normalement. ton SSH , tu l''executes à partir d'un code Php?
A présent , je suppose que juste en plaçant mon scrpt SHELL ds /var/www/cgi-bin/ et en donnant tous les droits au user apache sur ce repertoire, et en configurant de façon conséquente mon serveur web de façon à bien interpréter les CGI, JY ARRIVERAI, mais je sais pas comment me prendre. J'insiste surtout sur les droits d'accès au repertoir /../cgi-bin/, puisque j'ai tjrs eu des erreurs du type FORBIDDEN . NE VS LASSEZ PAS DE MOI MERCI Répondre à maxabi | Voila pas à pas ce que j'ai fait pour arrêter et relancer le service ssh depuis un script PHP, le script utilisé est celui qui ce lance lors du démarrage et de l'arrêt de l'ordi :
1. Le script est /etc/init.d/ssh, je n'y ai pas touché, ni déplacé, ni changé les droit, il est en user root et -rwxr--r--
2. J'ai modifié le sudoers de cette façon : # /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
# Host alias specification
# User alias specification
# Cmnd alias specification
Cmnd_Alias SSH = /etc/init.d/ssh
# User privilege specification
root ALL=(ALL) ALL
www-data ALL= NOPASSWD: SSH
3. J'ai modifié ton code PHP (enregistré dans /var/www/ssh.php) : <?php
$ligne = system('sudo /etc/init.d/ssh stop ');
echo $ligne.'<br>';
//Commenté pour tester dans une console avec /etc/init.d/ssh status
//$ligne1 = system('sudo /etc/init.d/ssh start');
//echo $ligne1;
?>4. J'ai lancé http://localhost/ssh.php
Tu n'as aucune chance de réussir à arrêter un service sans les droits du super user, or si tu lances comme un CGI, il aura les droits de www-data.
;-) Flachy Joe ;-)
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. » Les Shadoks Répondre à Flachy Joe | Flachy , j'ai repris sans modification ta demarche que j'ai appliqué , mais c le statuquo(aucun changement), je me demande comment tu as configuré ton serveur www-data pour que ça marche à ton niveau,
Et puis pour ce ki concerne mon rep /var/www/cgi-bin/ j''arrive toujours pas à accéder malgré que je l'ai changé de propriétaire et de groupe (apache) et que je l'ai rendu executable par tous.
merci par avance Répondre à maxabi | J'ai rien configuré, j'ai la config par défaut de l'install apache2 pour Debian Lenny.
Juste encore un test : qu'est ce que ce code t'affiche ? <?php
passthru('sudo -l');
?>
;-) Flachy Joe ;-)
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. » Les Shadoks Répondre à Flachy Joe | Répondre à maxabi | Tu n'as pas activé le safe-mode au moins ?
Sinon (http://www.php.net/manual/fr/ini.sect.safe-mode.php#ini.safe-mode-exec-dir)
Si PHP est utilisé en safe mode, les fonctions comme system() et toutes celles qui permettent l'exécution en ligne de commande refuseront d'exécuter des programmes qui ne sont pas dans ce dossier. Vous devez utiliser / en tant que séparateur de dossier sous tous les environnements, y compris Windows.
;-) Flachy Joe ;-)
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. » Les Shadoks Répondre à Flachy Joe |
| Le safe_mode n'est pas activé dans mon php.ini ; je peux jeter un coup d'oeil sur ton fichier httpd? Que je comparerai au mien .merci Répondre à maxabi |
| SALUT
j'ai toujours pas réussi à exécuter mon application "smsicomd" depuis mon code php que ce soit avec exec, passthru ou system,; malgré les différents modifications (edition du sudo, chmod 755 , chown apache).en fait , je n'obtiens en lançant mon code php ds la barre d'adresse que les phrases qui suivent "echo" du script shell (smsicomd), du genre '"starting bearerbox, starting smsbox" si par exple dans mon code php j'ai la commande "smsicomd start".Mais dans les faits, l'application ne s'est pas lancé. Alors QU'EN LIGNE DE CMDE , la même commande la lance.
Une autre possibilité , celle d'exécuter le script shell en mode cgi, se révèle aussi infructive, et pour cause , refus d'accès au repertoire /cgi-bin. Alors que je suis allé même chowner (apache) et chmoder (755) tous ce qui était contenu dans /var/www/.
avez- vs une proposition pour moi?
MERCI a vous tous et a flachyjoe. Répondre à maxabi |
|
|
|
|
|
|
|
|
|
|