#1 Le 06/06/2013, à 07:56
- myTamarou
Lancer shell_exec depuis un navigateur via un user système
Bonjour,
Je me permet de poser une question, je lance via mon navigateur une page php exécutant un script shell (ex : shell_exec("./logs_cluster.sh"). Cependant, ce script a besoin d'être lancer via un utilisateur usr_app, (Il s'agit d'un utilisateur système, qui utilise une clé .ssh particulière, et il n y a que lui qui peut se connecter à mon serveur distant).
Donc pour résumer :
- J'exécute ma page action.php
- Elle appelle un script log_cluster.sh
- Ce script doit être exécuter par usr_app
Malheureusement, je ne vois pas comment faire ça !
Si quelqu'un a des idées je suis preneur !
Merci.
Hors ligne
#2 Le 06/06/2013, à 08:10
- tiramiseb
Re : Lancer shell_exec depuis un navigateur via un user système
Salut,
Pour faire ce genre de choses, tu peux utiliser sudo.
http://doc.ubuntu-fr.org/sudo
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#3 Le 06/06/2013, à 08:30
- myTamarou
Re : Lancer shell_exec depuis un navigateur via un user système
Bonjour,
Merci pour ton retour, j'y ai pensé mais dans la logique je ne sais pas trop comment m'y prendre.
Hors ligne
#4 Le 06/06/2013, à 08:33
- tiramiseb
Re : Lancer shell_exec depuis un navigateur via un user système
1/ tu crées une règle pour autoriser l'exécution de cette commande dans la configuration de sudo (exécution de la commande "visudo" pour éditer cette configuration)
2/ dans ton script PHP tu appelles ton script shell avec sudo -u user_app /chemin/vers/log_cluster.sh
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#5 Le 06/06/2013, à 08:52
- myTamarou
Re : Lancer shell_exec depuis un navigateur via un user système
Donc si j'ai bien compris :
- Je me connecte avec mon user apache (www-data)
- Je rajoute mon user usr_app : sudo adduser usr_app sudo
- Je fais un visudo et je rajoute :
www-data ALL=(usr_app) NOPASSWD: /home/cluster/log_cluster.sh
Par contre www-data, n'a pas le droit il me semble de faire un sudo sur usr_app.
Hors ligne
#6 Le 06/06/2013, à 08:55
- tiramiseb
Re : Lancer shell_exec depuis un navigateur via un user système
- Je me connecte avec mon user apache (www-data)
Pourquoi !?
- Je rajoute mon user usr_app : sudo adduser usr_app sudo
Il existe déjà cet utilisateur, non !?
- Je fais un visudo et je rajoute :
www-data ALL=(usr_app) NOPASSWD: /home/cluster/log_cluster.sh
Oui, quelque chose dans le genre.
Par contre www-data, n'a pas le droit il me semble de faire un sudo sur usr_app.
C'est l'ajout de la ligne que tu as donnée (ou quelque chose du genre, je ne suis pas assez calé en sudo pour valider cette ligne comme ça sans tester) qui va donner le droit à www-data d'exécuter le script en question en tant que "usr_app"...
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#7 Le 06/06/2013, à 09:02
- myTamarou
Re : Lancer shell_exec depuis un navigateur via un user système
Pourquoi !?
Il faut que je le fasse en root ? Il me semble que vu que c'est cet user qui exécute le script, je pensais que c'était lui à qui on devait spécifier d'utiliser mon usr_app
Il existe déjà cet utilisateur, non !?
Oui il existe, j'ai eu un doute en fait. Mais ok, je n'applique pas cette étape.
C'est l'ajout de la ligne que tu as donnée (ou quelque chose du genre, je ne suis pas assez calé en sudo pour valider cette ligne comme ça sans tester) qui va donner le droit à www-data d'exécuter le script en question en tant que "usr_app"...
D'accord !
Hors ligne
#8 Le 06/06/2013, à 09:03
- tiramiseb
Re : Lancer shell_exec depuis un navigateur via un user système
tiramiseb a écrit :Pourquoi !?
Il faut que je le fasse en root ? Il me semble que vu que c'est cet user qui exécute le script, je pensais que c'était lui à qui on devait spécifier d'utiliser mon usr_app
Seul root a le droit de modifier les autorisations données par sudo !
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#9 Le 06/06/2013, à 09:12
- myTamarou
Re : Lancer shell_exec depuis un navigateur via un user système
Merci pour ta patience.
Ok, à la base c'est ce que je pensais mais du coup j'ai un doute. Donc si je comprends bien, étant donné qu'en passant par mon navigateur j'utilise le compte www-data, cette ligne : www-data ALL=(usr_app) NOPASSWD: /home/cluster/log_cluster.sh
dis qu'il à la permission de faire un sudo usr_app, c'est bien ça ?
Hors ligne
#10 Le 06/06/2013, à 09:24
- tiramiseb
Re : Lancer shell_exec depuis un navigateur via un user système
s'il n'y a pas d'erreur, cette ligne dit que www-data a le droit d'exécuter sudo -u usr_app /home/cluster/log_cluster.sh.
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#11 Le 08/06/2013, à 12:39
- myTamarou
Re : Lancer shell_exec depuis un navigateur via un user système
Je pense que c'est mon visudo qui est mauvais car :
[root@apache ~]# su - apache
-bash-3.2$ su - usr_app
Mot de passe :
Normalement si j'ai bien compris, comme ça je ne devrais pas avoir besoin de password
Rien non plus ici :
[root@apache ~]# sudo -u apache sudo -u usr_app /home/cluster/log_cluster.sh
[sudo] password for apache:
Dernière modification par myTamarou (Le 08/06/2013, à 12:39)
Hors ligne
#12 Le 08/06/2013, à 16:45
- tiramiseb
Re : Lancer shell_exec depuis un navigateur via un user système
Tout d'abord, permets-moi d'indiquer que les retours de commandes ne doivent pas être mis dans des balises "quote" dédiées aux citations d'autres personnes mais entre balises "code" (icône ).
Ensuite :
[root@apache ~]# su - apache bash-3.2$ su - usr_app Mot de passe :
Normalement si j'ai bien compris, comme ça je ne devrais pas avoir besoin de password
Eh bien non, car :
1/ tu as configuré sudo, cela n'a aucun lien avec la commande su
2/ dans sudo, tu as autorisé l'exécution d'une commande bien précise, pas le changement d'utilisateur "complet"
[root@apache ~]# sudo -u apache sudo -u usr_app /home/cluster/log_cluster.sh [sudo] password for apache:
Pas sûr que le système comprenne bien ce que tu veux faire, avec cet empilement d'arguments, deux commandes sudo dans la même ligne, etc. C'est peut-être juste, mais je n'ai pas vérifier je n'en suis pas sûr.
Essaie plutôt cela :
[root@apache ~]# su - apache
bash-3.2$ sudo -u usr_app /home/cluster/log_cluster.sh
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne