Aller au contenu
  • 0

Exécuter Une Commande Shell Dans Un Script Php


Spawn78

Question

Bonjour,

 

Je souhaite faire un script php qui va exécuter des commandes Shell sur mon Nas.

 

Mon Script devrait ressembler à ça :

<?php
exec('sudo -u admin /etc/init.d/twonkymedia.sh stop');
sleep (5);
exec('sudo -u admin /etc/init.d/twonkymedia.sh start')
exit;
 ?>

Seulement ça ne fonctionne pas, car le paquet "sudo" n'est pas installer sur mon NAs. J'ai lu sur un blog que l'on pouvais modifier le sudoer. Est-ce que cette solution est fiable ? elle ne risque pas de polluer le compte "Admin" par la suite ? ainsi que les fichiers ?

 

http://www.matthiaseinig.de/2009/12/06/qnap-activate-root-account-on-nas/

 

Merci de votre aide

 

Guillaume

 

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

9 réponses à cette question

Messages recommandés

  • 0

Bonjour,

 

Il y a toujours un risque d'autoriser (dans ce cas l'utilisateur httpdusr (celui d'apache qui exécute le php)) un utilisateur (surtout Web) à exécuter des commandes systèmes ... MAIS en effet sudoers est là ...

 

QNAP l'utilise dans des interfaces Web de QPKG (Optware pour les commandes ipkg) , Virtualisation Station pour KVM

D'autres (comme moi) utilise aussi cette possibilité pour l'interface Web de QPKG pour Virtualbox, X-Desktop, etc. (plus un contrôle d’accès BIEN SUR)

 

Généralement, chacun d'entre nous (QNAP inclus) ... a son propre sudo (ers) (recompilé) pour que les fichiers soient le plus possible "cachés"et privés ET NON commun, ce qui est moins facile à gérer (lorsqu'ils sont communs à plusieurs développeurs indépendant les uns des autres).

 

Vous disposez via Optware (ipkg) d'un sudo dont le fichier sudoers est dans /opt/etc ... attention de le modifier avec visudo pour valider AVANT vos entrées ... ATTENTION Optware ayant DÉJÀ intégré une exception pour httpdusr ... il vaut vous y ajouter ET NE PAS créer de nouvelles règles pour ce même utilisateur (impossibilité de hiérarchiser) ...

 

LIMITEZ impérativement vos programmes autorisés ... si vous deviez en avoir plusieurs ... créer un shell privé en exécution et lecture seule pour admin , vous changerez les droits pour mettre au point, et dans ce shell mettez un "case" sur paramètres pour exécuter chaque commande ... vous limiterez encore plus, les risques ...

 

SURTOUT ne mettez pas un droit ALL ALL NOPASSWORD ALL pour httpdusr ..

 

Philippe.

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Bonjour,

 

Désolé ... mais bien comprendre les risques n'est que le meilleur moyen de réussir ...

 

vous pouvez sans risque vous y mettre ... car sinon, vous pouvez lancer un shell ... le seul problème et qu'il ne s'éxécutera que sous le user : httpdusr, ce qui limite trop dans votre cas ...

 

Sinon pourquoi ne pas utiliser les crontab si vous savez quand vous voulez que cela "reparte" ... 

 

Il y a peu de risque à utiliser sudo si vous faites attention ...

 

Philippe.

Lien vers le commentaire
Partager sur d’autres sites

  • 0

 
Bonsoir Philippe,
 
Bon je me suis lancer pour modifier le fichier Sudoers, seulement ça ne fonctionne pas... j'ai du peut-être fait une erreur, j'ai rajouter ça dans le visudo :
 

# User privilege specification
root    ALL=(ALL) ALL
httpdusr ALL=NOPASSWD: /etc/init.d/twonkymedia.sh stop
httpdusr ALL=NOPASSWD: /etc/init.d/twonkymedia.sh start

Puis dans mon Script PHP je lui ai indiqué ceci :
 

<?php
shell_exec('su -httpdusr /etc/init.d/twonkymedia.sh stop'); 
sleep (5);
shell_exec('su -httpdusr /etc/init.d/twonkymedia.sh start');
sleep (5);
exit;
 ?>

Est-ce que tu pourras ce qui cloche ?

 

Merci

 

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Bonjour,

 

Jamais 2 lignes pour un même utilisateur

ne mettre QUE le shell ... les paramétres n'ont rien à y faire

 

donc une ligne : ET PAS D'ESPACE après le : ; et admin sinon c'est root par défaut ...

httpdusr ALL=(admin)NOPASSWD:/etc/init.d/twonkymedia.sh

 

su n'utilise PAS le fichier sudoers c'est sudo

su ou sudo utilise root ... or QNAP utilise admin ....

 

donc :

sudo -u admin /etc/init.d/twonkymedia.sh args....

 

Philippe.

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Philippe,
 
J'ai suivi tes indications mais ça ne fonctionne pas, je te donne mon sudoers :

# User privilege specification
root    ALL=(ALL) ALL
httpdusr ALL=(admin)NOPASSWD:/etc/init.d/twonkymedia.sh

Et mon script Php

<?php
shell_exec('sudo -u admin /etc/init.d/twonkymedia.sh start'); 
 ?>

Il n'y pas validation particulière pour valider le fichier sudoer un "wq" suffit pour que les modifications soient prise en compte ?

 

Merci de ton aide

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Bonjour,

 

Ne sachant pas l'état du PATH (chemin de recherche des exécutable ... ) je mettrais /opt/bin/sudo dans le commande dans php

 

mon sudoers qui fonctionne ... mais depuis mon site Web mais en shell car php (je ne connais pas)

root ALL=(ALL) ALL
admin ALL=(ALL) ALL
httpdusr ALL=(admin)NOPASSWD:/myprog/vbox_mgr/bin/vbox_mgr

vbox_mgr étant un shell s’exécutant sous admin ... dans mon cas ...

 

 

Philippe.

Lien vers le commentaire
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à cette question…

×   Vous avez collé du contenu avec mise en forme.   Supprimer la mise en forme

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
×
×
  • Créer...