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 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

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. sad

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

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"...

Hors ligne

#7 Le 06/06/2013, à 09:02

myTamarou

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

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

myTamarou a écrit :
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 !

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.

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 bt_pre.png).

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

Hors ligne