Espace perso + fonction php pour script shell

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Espace perso + fonction php pour script shell

Message le Sam Sep 29, 2007 16:26

Voilà, je travaille actuellement à la création d'un espace perso pour des serveurs de jeux.

Le but de ce petit pannel est de pouvoir executer des scripts shell/bash depuis son pannel perso comme le reboot ou la réinstallation du serveur de jeu.

Donc pour l'instant la solution simplissime retenu est la création d'un répertoire pour chaque membre protégé par .htaccess/htpasswd dans leur /home/user/www, le serveur de jeux se situant dans /home/user/serv/

Ma question est avant tout niveau sécurité... La fonction php exec n'étant pas très sécure et le php doit être safe mode off il me semble

J'ai vaguement entendu parlé de la fonction php system.

Donc quelques questions concernant cette fonction si quelques uns d'entre vous l'utilise ou si vous avez une méthode plus pertinente...

Le but serait de donner des bonnes permissions aux fichiers contenant le fonction exec car suffirait que l'user mette un "reboot" dedans et pas seulement son serveur de jeu ne rebooterais...

Voilà, si vous avez des liens web intéressants, ou d'autres... Je prends.

dmathieu
Modérateur
Modérateur
 
Messages: 7244
Inscription: 9 Jan 2004

Message le Sam Sep 29, 2007 16:35

Pour n'autoriser que certaines actions, tu peut parfaitement faire un système de whiteliste.
Tu interdit toutes les commandes, sauf certaines.

Après, exec() ne permettra pas à tes membres de rebooter la machine. A moins que Apache ne soit executé en root evidemment.

Tu peut aussi sécuriser les commandes passées avec escapesheelarg et escapeshellcmd.


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Message le Sam Sep 29, 2007 16:59

Hum, je suis en train de regarder aussi de la fonction system, elle permet pas mal de trucs...

Sinon pour tes fonctions, assez intéressante je trouve...
Je fouine je fouine...


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Message le Sam Sep 29, 2007 20:28

Bon j'ai trouvé un truc intéressant, mais bizarrement impossible d'éxécuter ce script, certainnement un problème de droits
Code: Tout sélectionner
<html>
        <head>
                <title>Membres</title>
                <script type='text/JavaScript'>

                        function getXhr(){
                                var xhr = null;
                                if(window.XMLHttpRequest) // Firefox et autres
                                   xhr = new XMLHttpRequest();
                                else if(window.ActiveXObject){ // Internet Explorer
                                   try {
                                        xhr = new ActiveXObject("Msxml2.XMLHTTP");
                                    } catch (e) {
                                        xhr = new ActiveXObject("Microsoft.XMLHTTP");
                                    }
                                }
                                else { // XMLHttpRequest non supporté par le navigateur
                                   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
                                   xhr = false;
                                }
                                return xhr
                        }

                        /**
                        * Méthode qui sera appelée sur le click du bouton
                        */
                        function go(){
                                var xhr = getXhr()
                                // On défini ce qu'on va faire quand on aura la réponse
                                xhr.onreadystatechange = function(){
                                        // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
                                        if(xhr.readyState == 4 && xhr.status == 200){
                                                alert(xhr.responseText);
                                        }
                                }
                                xhr.open("GET","reboot_serv.php",true);
                                xhr.send(null);
                        }
                </script>
        </head>
        <body>
                <input type='button' value='Redémarrer serveur' onclick='go()' />
        </body>
</html>


Et le fichier reboot_serv.php
Code: Tout sélectionner
<?php
        //echo "Votre serveur est en train de redémarrer";
        echo exec('/home/zepol/www/zepol.sh');

?>


Alors d'abord terster en safe mode on, puis en off

Fonction exec pour tester, car c'est la seule que j'arrive à faire marcher... très certainement un problème de permission

apache : www-data
script php : zepol
script zepol.sh : zepol
le fichier zepol.sh n'éxecute que des fichiers apartenant à lui même...
Peut-être le problème du www-data... Alors je pense à suphp par encore install, mais bon :p


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Huhu

Message le Sam Sep 29, 2007 21:57

Bon, désolé de ne pas utiliser la fonction éditer, mais ça représente plusieurs pas, et si quelqu'un recherche la solution, ça pourra peut-être l'aider...

Donc j'ai fini par trouver...

Un ptit crontab qui vient toutes les minutes vérifier la présence d'un fichier d'un nom user_cequejeveuxfaire.txt.
Si ce fichier est présent, le script crontab execute ce fichier...
Bon, on arrive pas à une réactivité énorme, mais elle est toujours inférieure à la minute, donc c'est plutot pas mal...

Zam
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 21
Inscription: 14 Aoû 2007

Message le Mar Oct 16, 2007 17:56

Pas besoin de reboot completement le serveur pour reboot le serv de jeu...

Je suis en train de me lancer la dedans aussi...par contre toutes ces commandes je ne les maitrise pas encore tt a fait...

Le php je debute...

mais j ai trouve un script permettant d envoyer des commande RCON a un serv...

Logiquement tout peut se faire depuis la...

Pour le reboot il suffirait d envoyer la commande exit,et si l autoupdate a été lancé avec le serv de jeu..il redemarrera!!!

Et la plupart des options peuvent se faire via rcon..

La seul chose que je cherche maintenant est de crééer justement ces pages reservé a l utilisateur x seulement...l utlisateur y aura sa page a lui avec son serveur...

Ce que je cherche c un script php qui me permette de gerer un espace membre de ce genre...si quelqu un avait ca sous la main...

parce que si je me lance dedans et vu mes connaissance...j en ai pour 3 mois!!!

Merci


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Message le Mar Oct 16, 2007 18:29

Zam a écrit:Pas besoin de reboot completement le serveur pour reboot le serv de jeu...

Bah encore heureux que rebooter la machine ne soit pas nécessaire...
Je n'suis pas fan des reboots via exit. Un bon gros kill de tout ce qui concerne le serveur en question et une relance, tu gagnes pas mal de ram...

Pour le script php pour envoyer des RCON :
-http://www.kquery.com/forums/index.php?showtopic=1737
Marche très très bien...
Pour l'espace perso, bah tu envois tes commandes avec...
Mais dans ce cas là, HLSW est ptete un peu mieux si tu souhaites juste utiliser les commandes RCON... Moi j'ai fait des boutons pour lancer la compression des HLTVs... Si le serveur par en timeout, il te faudra bien le relancer, et par Rcon, tu n'risques pas d'avoir de réponses...


rog
WRInaute passionné
WRInaute passionné
 
Messages: 1662
Inscription: 21 Sep 2006

Message le Mar Oct 16, 2007 18:39

c'est bien de voir l'aspect secu avant de developper ton script

si tu peux faire tourner php en safe mode c'est mieux

le plus safe c'est de faire ecrire tes commandes dans un fichier en passant bien sur par une table de corresponcance et de lancer un shell en cron qui scrutera le fichier

rog

Zam
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 21
Inscription: 14 Aoû 2007

Message le Mar Oct 16, 2007 19:29

On vient de me filer une adresse:
http://php-info.info/demo/

pour l espace membre...apres a toi de creer tes pages..^^

Ca peut ne pas etre mal!!!

Par contre je n ai pas compris comment tu peut reboot lorsque le serv est dead...

Il faut utiliser une commande du genre exec???en php...pour l instan je ne sai pas du tt m en servir...

Mais il fau bien commencer^^

dmathieu
Modérateur
Modérateur
 
Messages: 7244
Inscription: 9 Jan 2004

Message le Mar Oct 16, 2007 19:30

:roll:


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Message le Mar Oct 16, 2007 20:50

Bah tu lances bien ton serveur CS via putty (SSH) via un script.
Donc si, dans ton idée de demander un reboot du serveur CS par un exit dans la console HLSW. Le problème est que si ton serveur part en timeout, en zombie ou un truc chiant, le exit ne risque pas de répondre...
Moi à l'origine c'était surtout pour le HLTV, tu loues un serveur CS + HLTV, le gars tappes stop au lieu de stop_recording, son HLTV est down, impossible de le relancer sans shell.
Donc voilou... Tout dépends si c'est pour un usage perso ou team ou location... Pour la location faut vraiment se mettre dans la peau d'un noob...

Zam
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 21
Inscription: 14 Aoû 2007

Message le Ven Oct 19, 2007 6:44

ah exact...je commence petit a petit a comprendre...

As tu reussi a faire cette fameuse page de gestion toi qui te lance la dedans???

juste pour avoir une idée du genre de commande... :)

Zam
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 21
Inscription: 14 Aoû 2007

Message le Jeu Nov 08, 2007 22:30

UP UP UP


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Message le Ven Nov 09, 2007 2:46

http://wiki.touch-serv.net/index.php/TSd_Admin

Ca marche plutot bien et nous l'installons à nos clients...

Zam
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 21
Inscription: 14 Aoû 2007

Message le Sam Nov 10, 2007 18:18

Et bien y aurait il une possibilité de récupérer ce script???

As tu posé une liscence dessus??

Quel genre de commande finalement as tu utilisé?

EDIT>>> dsl j avais pas du tout...mais alors pas du tout vu le lien^^

1000 excuses^^

Espace perso + fonction php pour script shell

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité