administration serveur en php (apache en root ?)

administration serveur en php (apache en root ?) - PHP - Programmation

Marsh Posté le 17-01-2007 à 20:31:36    

Bonjour tout le monde !
 
J'ai un serveur Debian chez moi en local, et je souhaite que certains utilisateurs puissent effectuer quelques opérations de maintenance sans avoir d'acces shell.
Je me suis dit : Pourquoi ne pas faire un script php (avec identification) permettant certaines actions.
 
Par exemple avec la commande système, si je veu qu'un utilisateur puisse arrêter le serveur :

Citation :

sytem(halt)


 
Mais malheureusement apache n'a pas les droits pour faire cette commande , pour cela il faudrait que je le fasse tourner en root, ce qui n'est pas une très bonne solution.
J'aimerais donc savoir si il y a une alternative ?
 
 
Merci d'avance  
 
 
 
 
AnTiX


Message édité par antix le 17-01-2007 à 20:32:39
Reply

Marsh Posté le 17-01-2007 à 20:31:36   

Reply

Marsh Posté le 18-01-2007 à 01:05:56    

un script shell ou autre en setuid qui fait quelques actions prédéterminées et ton script php qui lance de script ?


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 18-01-2007 à 07:03:33    

Ha merci 0x90, ca me convient ;)
 
En fait comme je débute sur Linux, je ne connaissais pas setuid  :sweat:  
Par contre, comment je dis à php d'éxécuter le script ? Y'a une commande particulière ou je le fais avec system() ?
 
 
Merci !

Reply

Marsh Posté le 18-01-2007 à 13:20:18    

Tu peux aussi regarde du coté de la commande unix SUDO. Ensuite tu peux faire shell_exec(sudo halt), en configurant sudo pour qu'il ne demande pas le mot de passe pour halt.

Reply

Marsh Posté le 18-01-2007 à 13:26:18    

antix a écrit :

Ha merci 0x90, ca me convient ;)

 

En fait comme je débute sur Linux, je ne connaissais pas setuid  :sweat:
Par contre, comment je dis à php d'éxécuter le script ? Y'a une commande particulière ou je le fais avec system() ?

 


Merci !

 

Ouaip avec system()


Message édité par 0x90 le 18-01-2007 à 13:26:24

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 18-01-2007 à 17:29:33    

Ok merci à vous, ca marche maintenant.
 
Par contre je me heurte à un nouveau problème:
Lorsque je veu afficher le statut samba (par exemple), je tape :
 

Citation :

<?php
$commande = "system("smbstatus" )";
echo "$command"
?>


 
Ca me r'envoie dans le naviguateur :

Citation :

Samba version 3.0.14a-Debian PID Username Group Machine ------------------------------------------------------------------- 10964 adrien samba adrien (192.168.1.4) Service pid machine Connected at ------------------------------------------------------- profiles 10964 adrien Thu Jan 18 17:25:12 2007 adrien 10964 adrien Thu Jan 18 17:25:12 2007 netlogon 10964 adrien Thu Jan 18 17:25:12 2007 famille 10964 adrien Thu Jan 18 17:25:12 2007 IPC$ 10964 adrien Thu Jan 18 17:25:12 2007 Multimedia 10964 adrien Thu Jan 18 17:25:13 2007 Locked files: Pid DenyMode Access R/W Oplock Name -------------------------------------------------------------- 10964 DENY_WRITE 0xa1 RDONLY LEVEL_II /home/samba/famille//Adrien/putty.exe Thu Jan 18 17:29:42 2007 10964 DENY_WRITE 0x2019f RDWR NONE /home/samba/profiles/adrien/Local Settings/Application Data/Microsoft/Outlook/Outlook.pst Thu Jan 18 17:25:16 2007


 
Il m'affiche le résultat sans saut de ligne (tout le texte est sur la même ligne, ce qui rend la lecture très difficile et fastidieuse. Y'a t-il un moyen de palier ce problème ?  
 
 
Merci


Message édité par antix le 18-01-2007 à 17:32:59
Reply

Marsh Posté le 18-01-2007 à 17:51:17    

nl2br() et htmlentities sont tes amis pour passer de texte simple à de l'html. ;)

Reply

Marsh Posté le 18-01-2007 à 18:08:54    

J'ai essayé :
 
 

Citation :

<?php
$commande = nl2br(system("smbstatus" );
echo "$command";
?>


 

Citation :


<?php
$commande = htmlentities(nl2br(system("smbstatus" ));
echo "$command";
?>


 
et même :
 
 

Citation :


<?php
$commande = htmlentities(nl2br(system("smbstatus" ));
echo  htmlentities(nl2br("$command" ));
?>


 
Mais ca me renvoie toujours :

Citation :

Samba version 3.0.14a-Debian PID Username Group Machine ------------------------------------------------------------------- 10964 adrien samba adrien (192.168.1.4) Service pid machine Connected at ------------------------------------------------------- profiles 10964 adrien Thu Jan 18 17:25:12 2007 profiles 10964 adrien Thu Jan 18 18:00:22 2007 adrien 10964 adrien Thu Jan 18 17:25:12 2007 famille 10964 adrien Thu Jan 18 17:25:12 2007 Locked files: Pid DenyMode Access R/W Oplock Name -------------------------------------------------------------- 10964 DENY_WRITE 0xa1 RDONLY LEVEL_II /home/samba/famille//Adrien/putty.exe Thu Jan 18 17:29:42 2007 10964 DENY_WRITE 0x2019f RDWR NONE /home/samba/profiles/adrien/Local Settings/Application Data/Microsoft/Outlook/Outlook.pst Thu Jan 18 17:25:16 2007


 
Alors qu'en ligne de commande ca me renvoie :

Citation :


Samba version 3.0.14a-Debian
PID     Username      Group         Machine
-------------------------------------------------------------------
10964   adrien        samba         adrien       (192.168.1.4)
 
Service      pid     machine       Connected at
-------------------------------------------------------
profiles     10964   adrien        Thu Jan 18 17:25:12 2007
profiles     10964   adrien        Thu Jan 18 18:00:22 2007
adrien       10964   adrien        Thu Jan 18 17:25:12 2007
famille      10964   adrien        Thu Jan 18 17:25:12 2007
 
Locked files:
Pid    DenyMode   Access      R/W        Oplock           Name
--------------------------------------------------------------
10964  DENY_WRITE 0xa1        RDONLY     LEVEL_II         /home/samba/famille//Adrien/putty.exe   Thu Jan 18 17:29:42 2007
10964  DENY_WRITE 0x2019f     RDWR       NONE             /home/samba/profiles/adrien/Local Settings/Application Data/Microsoft/Outlook/Outlook.pst   Thu Jan 18 17:25:16 2007


 
Merci de votre aide.


Message édité par antix le 18-01-2007 à 18:11:55
Reply

Marsh Posté le 19-01-2007 à 23:00:54    

Je me permet de reposter car je me heure à un nouvea problème.
Je veus laisser à l'utilisateur le choxi du temps apres leque le serveur s'éteindra.
J'aimerais donc transmettre la variable temps à mon script à partir de php.
Le seul moyen que j'ai trouver, c'est avec un script cgi qui récupère les variables (ex : index?temps=10).
Mais malheresement le setuid ne marche pas avec les scripts perl :'(...
Il me renvoie :

Citation :

Can't do setuid (cannot exec sperl)


 
Ce qui m'ammene à me poser 2 questions :  
-Y'a t-il un moyen de faire fonctionner set uid pour perl ?
-Y'a t'il un moyen de faire un script shell pouvant remplir le rôle de mon ancien script perl (cad reboot en fonction du variable transmise par php).
 
Merci de votre aide précieuse

Reply

Marsh Posté le 22-01-2007 à 14:07:47    

Le setuid, tu l'as mis sur le programme perl ou sur le script?
 
EDIT : ta nouvelle question a plus de chance de trouver une réponse dans OSA ou dans programmation PERL surtout que ca n'est plus une question de php.


Message édité par omega2 le 22-01-2007 à 14:09:19
Reply

Marsh Posté le 22-01-2007 à 14:07:47   

Reply

Marsh Posté le 22-01-2007 à 17:20:00    

Ah ok merci , je l'ai mis sur le script perl.

Reply

Sujets relatifs:

Leave a Replay

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