Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/03/2008, à 21:07

Yann59200

Execution Shell avec php

Bonjour a tous,

J’ai un souci dont je ne trouve pas la solution, j’espère que quelqu’un ici a déjà rencontrer ce problème et pourra m’aider.

J’ai crée une page php qui exécute un Shell grâce a la commande exec()

<? exec("./shell.sh"); ?>

Dans mon shell je voudrais exécuter une commande pour créer un répertoire et en changer les attributs et l’utilisateur/groupe.

Mon dossier ce créer sans problème, les attributs eux changent sans problème. Seul l’utilisateur/groupe reste le même c'est-à-dire www-data.

# On ce place dans le dossier 

cd /home/x

# On crée le repertoire 

mkdir test

# Changement des attributs du repertoire 

chown nobody test
chgrp nogroup test
chmod 775 test

Je vous remercie d'avance.

#2 Le 10/03/2008, à 21:29

mekare

Re : Execution Shell avec php

Ce n'est pas plutôt shell_exec ?

Hors ligne

#3 Le 10/03/2008, à 21:53

Yann59200

Re : Execution Shell avec php

Merci de ta réponse wink

Par doute j'avais déjà essayer mais cela ne change rien.

#4 Le 10/03/2008, à 22:29

akira86

Re : Execution Shell avec php

Salut
je croie que tu trouvera ce que tu cherche dans les commentaires de cette page : http://fr.php.net/manual/fr/function.chown.php


astuce de la console :
tab pour compléter automatiquement le nom d'une commande d'un dossier ou d'un fichier.
clique molette pour recopier une sélection.

Hors ligne

#5 Le 10/03/2008, à 23:47

Yann59200

Re : Execution Shell avec php

Merci pour ta réponse. smile

J'avoue que je n'avais pas penser a chercher ces commandes sous php directement. Cependant j'aurai voulu savoir pourquoi il est impossible de changer l'utilisateur/groupe via un shell exécuter en php

#6 Le 11/03/2008, à 06:35

dexinou

Re : Execution Shell avec php

Yann59200 a écrit :

Merci pour ta réponse. smile

J'avoue que je n'avais pas penser a chercher ces commandes sous php directement. Cependant j'aurai voulu savoir pourquoi il est impossible de changer l'utilisateur/groupe via un shell exécuter en php

car le seul qui peu faire cela c Root
et comme ton script n'est pas lancé par root alors c pas possible
a moins que  l'utilisateur qui lance le script fait partie des sudoers


Ubuntu 9.10 64bits ext4 ® Core 2 Duo
Unix..... il y a moins bien mais c'est plus cher.
Si t'as pas compris la réponse, pose mieux ta question.
Tutoriaux Linux, apache, pure-ftpd, bind, mysql, qmail...

Hors ligne

#7 Le 11/03/2008, à 18:35

Yann59200

Re : Execution Shell avec php

Oui mais a ce moment la je prend des risques ? hmm

#8 Le 11/03/2008, à 20:21

dexinou

Re : Execution Shell avec php

Yann59200 a écrit :

Oui mais a ce moment la je prend des risques ? hmm

Non si tu donnes le droit a cet utilisateur de lancer seulement cette commande et pas d'autre.


Ubuntu 9.10 64bits ext4 ® Core 2 Duo
Unix..... il y a moins bien mais c'est plus cher.
Si t'as pas compris la réponse, pose mieux ta question.
Tutoriaux Linux, apache, pure-ftpd, bind, mysql, qmail...

Hors ligne

#9 Le 12/03/2008, à 12:08

insomniak

Re : Execution Shell avec php

Salut,

dexinou : quelle méthode utiliserais tu pour brider un utilisateur sur uniquement une commande comme tu dis de le faire ?
et puis ton site est down, c'est normal ? j'aurai bien été faire un tour dessus

Hors ligne

#10 Le 12/03/2008, à 14:30

dexinou

Re : Execution Shell avec php

insomniak a écrit :

Salut,

dexinou : quelle méthode utiliserais tu pour brider un utilisateur sur uniquement une commande comme tu dis de le faire ?
et puis ton site est down, c'est normal ? j'aurai bien été faire un tour dessus

ben par exemple ça pourrait être un truc dans le genre (dans le fichier /etc/sudoers):

toto   ALL = NOPASSWD: shutdown -h now

Ce qui lui donne le droit seulement d'arrêter la machine, le NOPASSWD évite de donner le mot de passe, utile si tu dois lancer la commande via un script.

Enuite on l'utilise comme ceci (je prend l'exemple d'un script php qui stop la machine et lancé par toto):

$halt = shell_exec('sudo shutdown -h now');

Le dédié qui héberge mon site à subit une mise à jour de sarge vers etch, il sera bientôt disponible  wink

Dernière modification par dexinou (Le 12/03/2008, à 20:50)


Ubuntu 9.10 64bits ext4 ® Core 2 Duo
Unix..... il y a moins bien mais c'est plus cher.
Si t'as pas compris la réponse, pose mieux ta question.
Tutoriaux Linux, apache, pure-ftpd, bind, mysql, qmail...

Hors ligne

#11 Le 30/04/2008, à 12:41

DZ

Re : Execution Shell avec php

Bonjour!

J'ai un problème dans le même goût. Pour ma part, pas de soucis pour éteindre le pc via php:

if($HTTP_GET_VARS['reboot']=="re")
shell_exec('sudo /sbin/shutdown -r now');
else
shell_exec('sudo shutdown -h now');

(pas de problème de sécurité c'est en local).

Par contre j'essaye de programmer l'extinction, et là ca ne fonctionne pas. En essayant à la console, je me suis aperçu qu'un control C interrompait la commande, peut-être faut-il que je fasse en sorte que cela se passe en arrière-plan, mais je ne sais pas comment on doit procéder pour cela...

Mon Code:

$ordre1="'sudo /sbin/shutdown ".$heure.":".$minute."'";
shell_exec($ordre1);

Qui me donne par exemple : shell_exec('sudo /sbin/shutdown 22:00')


Si quelqu'un a une solution, je suis preneur,

Merci

Hors ligne

#12 Le 01/05/2008, à 01:52

DZ

Re : Execution Shell avec php

Pas d'idée? hmm

Hors ligne

#13 Le 04/05/2008, à 22:43

dexinou

Re : Execution Shell avec php

DZ a écrit :

Pas d'idée? hmm

pas besoi jde faire un script exprès pour l'éteindre à une certaint heure il te suffit de mettre les minutes qu'il te faut attendre pour l'éteindre.

sudo /sbin/shutdown -h 10

le pc s'éteindra dans 10 minutes
si ça marche pas avec -h essai avec -p

Il te suffit ensuite de compter combien il y a de minutes jusqu'à  22:00


Ubuntu 9.10 64bits ext4 ® Core 2 Duo
Unix..... il y a moins bien mais c'est plus cher.
Si t'as pas compris la réponse, pose mieux ta question.
Tutoriaux Linux, apache, pure-ftpd, bind, mysql, qmail...

Hors ligne

#14 Le 05/05/2008, à 10:34

DZ

Re : Execution Shell avec php

Bonjour,

Je vais essayer cela, tu penses que ce qui change avec cette méthode c'est le fait que la commande se lance bien en arrière plan si j'ai bien compris.

Merci.

Dernière modification par DZ (Le 05/05/2008, à 10:46)

Hors ligne

#15 Le 05/05/2008, à 11:11

DZ

Re : Execution Shell avec php

Cela ne fonctionne pas non plus, à mon avis pour la même raison, si j'essaye à la console j'ai ceci :

$$$@$$$-laptop:~$ sudo /sbin/shutdown -P 6

Message de diffusion de $$$@$$$-laptop
    (/dev/pts/0) à 11:11...

The system is going down for power off in 6 minutes!


Je ne récupère pas la main sans faire de control-c.
Du coup à mon avis quand php exécute la commande, il la tue juste après automatiquement, contrairement à un sudo shutdown -h now où là il l'exécute immédiatement sans se poser de question de reprendre la main ou non.

Hors ligne

#16 Le 05/05/2008, à 13:57

DZ

Re : Execution Shell avec php

J'ai essayé avec nohup et avec "&" mais en vain...

Hors ligne

#17 Le 05/05/2008, à 15:20

DZ

Re : Execution Shell avec php

J'ai trouvé ca dans error.log, j'ai du mal à comprendre puisque shutdown -h now fonctionne correctement...

sh: sudo /sbin/shutdown -P 5: not found
sh: sudo /sbin/shutdown -P 3&: not found
sh: sudo /sbin/shutdown -P 2&: not found
sh: sudo /sbin/shutdown -P 13&: not found
sh: sudo /sbin/shutdown -P 12: not found
sh: sudo /sbin/shutdown -h 10: not found
sh: sudo shutdown -h 10: not found

Hors ligne