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 20/12/2006, à 16:01

Frz

Lancer une appli via navigateur

Salut à tous smile

Je me décide finalement à poster ici en espérant trouver une réponse à un problème que j'ai depuis un certain moment. Mon manque de compétences en matière de système et de compréhension du fonctionnement d'Apache y sont certainement pour beaucoup. J'espère donc apprendre 2-3 trucs en ouvrant ce sujet...

Bref !

Je développe depuis un petit moment une appli web qui devrait me servir de "MediaCenter" (c'est la grande mode en ce moment). Au programme : parcours d'une bibliothèque de média, lancement des ces divers médias (principalement musique, films et photos), récup' de news via RSS, récup' de la météo etc... Une appli du genre MythTV pour ceux qui connaissent mais en beaucoup plus simple !
<parenthèse>Le choix de l'appli web est contestable, on peut en discuter dans un autre topic si vous voulez, je suis ouvert smile</parenthèse>

Le tout est développé en PHP, XML, xHTML et CSS. Le logiciel est destiné à tourner en local (hors de question de lancer le lecteur de musique sur le poste de je ne sais qui à distance) sur un serveur web, du type Apache. Enfin, il devra être pilotable uniquement à la souris.

Comme expliqué précédemment, j'ai besoin de pouvoir lire mes films. Et je dois donc lancer un lecteur quelconque via un simple lien (celui-ci execute alors un script php qui lance le player avec tous un tas  de paramètres-qui-vont-bien).
Au départ j'utilisais Mplayer, que je lançais sans interface graphique et en fullscreen. Tout fonctionnait bien.
Mais le soucis est que je n'ai pas d'interface graphique justement... Donc pas de bouton pour mettre en pause, avancer, baisser le son etc...
J'ai donc remplacé Mplayer par gMplayer et là surprise : impossible de lancer le lecteur.

Ce que j'ai compris du problème :

Tout n'est pas très clair pour moi mais apparemment, le système considère que c'est l'utilisateur "www-data" (utilisateur par défaut de Apache) qui lance l'application, et cet utilisateur n'a pas le droit de se connecter à X.
J'ai essayé en modifiant le fichier de conf de Apache en mettant mon login à la place de "www-data" mais sans amélioration...

Quelqu'un a-t-il déjà essayé de faire une telle manipulation ? Auriez-vous une idée qui me permettrait de résoudre mon problème et de lancer une appli "graphique" via Apache ?

Merci d'avance pour toute aide/piste/conseil/remarque smile

Hors ligne

#2 Le 22/12/2006, à 03:27

kikdijon

Re : Lancer une appli via navigateur

je vois peut-être plusieurs solutions...
  Tu peux déjà essayer de voir si il n'y a pas un groupe dans lequel tu pourrais placer www-data pour avoir les droits sur l'execution d'apps graphiques. Je vois mal quel peut être ce groupe, ceci dit, parce que je ne vois pas quel groupe serait propre à X. Peut-être simplement le groupe user, ou le groupe au nom de ton utilisateur, s'il y en a un. Le problème serait que apache aurait d'un coup une augmentation de privilège conséquente et pas forcément souhaitable.
  Une autre solution serait de débloquer la sécurité de X empêchant quelqu'un d'autre que ton user de lancer des apps graphiques. Ca se fait avec la commande: "xhost +", mais je n'ai pas trop conscience des dangers de sécurité cela implique. Je suppose cependant qu'il serait facile de bloquer le port de X, s'il y en a un, avec un parefeu.
  Troisième solution, mais ça me semble moins satisfaisant: mettre le bit suid à l'app que tu veux lancer.

Dernière modification par kikdijon (Le 22/12/2006, à 03:28)


blog : http://blog.olivier-elmekki.com
site professionnel : http://olivier-elmekki.com

Hors ligne

#3 Le 29/12/2006, à 01:11

Frz

Re : Lancer une appli via navigateur

Salut !

Tout d'abord je tiens à te remercier pour ta réponse et à m'excuser pour le retard de ma réponse. Avec les fêtes-tout-ça j'ai pas trop eu le temps de revenir sur ce problème.

J'ai peut-être trouvé une solution beaucoup plus simple. Mais j'aimerais avoir votre avis ou vos remarques sur cette méthode, je ne suis pas tout à fait sûr de mon coup éhéh.

Alors en fait, ma solution consiste, non plus à lancer la vidéo via navigateur web mais DANS le navigateur web, grâce au plugin VLC pour mozilla (http://www.videolan.org/doc/vlc-user-guide/fr/ch07.html).
D'après mes tests ça marche du tonnerre, il lit les DVD, divX etc et il s'interface très facilement avec du javascript (la plupart des fonctions sont déjà inclues) et on peut passer en mode plein écran ou en sortir en double-cliquant, tout simplement.

Avez-vous des remarques quant à cette utilisation ? Trop lourd ? Pas propre ? J'ai quelques doutes mais c'est pour le moment la solution la plus simple que j'ai trouvé.

Pour revenir aux solutions proposées ci-dessus, j'avais testé celle du xhost mais sans succès sad Je devrais peut-être retester si la soluce du plugin n'est pas adéquate.
Pour les autres, c'est vrai que je ne suis pas sûr d'un point de vue sécurité non plus. Je vais tenter de me renseigner un peu plus de ce côté.

Merci en tout cas, et n'hésitez pas à contribuer smile

Hors ligne

#4 Le 29/12/2006, à 12:47

kikdijon

Re : Lancer une appli via navigateur

Si le fait d'utiliser un plugin te permet de faire ce que tu veux, alors c'est du tout bon smile

  Évidemment, c'est pas "propre", mais ton but n'est pas de le distribuer, non? Après, ce qui semblerait le plus adapté à ce genre de tâche, ce serait de faire une app en gtk/langage_quelconque plutôt que de passer par apache en interdisant l'accès depuis l'extérieur...

  Je suppose que tu as choisi cette solution parce que ce sont des langages qui te sont plus familiers, mais avec cli, tu peux aussi te servir de php-gtk, ce qui résoudrait pas mal de problèmes d'inadaptation, avec la contrainte de prendre un peu de temps pour saisir les bases de gtk...

Dernière modification par kikdijon (Le 29/12/2006, à 12:48)


blog : http://blog.olivier-elmekki.com
site professionnel : http://olivier-elmekki.com

Hors ligne

#5 Le 30/12/2006, à 14:53

lunique

Re : Lancer une appli via navigateur

Je vais peut etre dire une connerie (encore que...) mais a premiere vue, si tu pouvais lancer mplayer c'est que tu peux lancer des fenetres (ben oui, t'as beau ne pas pouvoir le piloter a la souris, sa n'empeche pas ^ ^ ) donc si t'as un jour envie de reessayer avec gmplayer, tu nous filera le message d'erreur de gmplayer lorsque d'essaye de le lancer ? 

On pourrait aussi imaginer que ton script commence par "sudo su toto" en ayant configuré sudo pour qu'il ne demande pas le mot de passe pour www-data lorsqu'il lance la commande su et apres, tu lance gmplayer. Sa devrait le lancer avec tes droit.

Hors ligne

#6 Le 31/12/2006, à 02:48

kikdijon

Re : Lancer une appli via navigateur

hum, accorder les droits adminstrateurs sans authentification à ce qui descend d'apache, je sais pas si c'est une très bonne idée...


blog : http://blog.olivier-elmekki.com
site professionnel : http://olivier-elmekki.com

Hors ligne

#7 Le 01/01/2007, à 14:01

lunique

Re : Lancer une appli via navigateur

On pourrait passer par un script qui ferait "sudo su toto&&mplayer arg"  et autoriser  apache a lancer sudo le_script en tant que root (mais que ce script).

Mais comme je l'ai dit, je ne pense pas que sa vienne directement des autorisation. Je ferrai un test dans l'aprem, je dirai ce qu'il en est ^ ^

Hors ligne

#8 Le 07/07/2007, à 18:22

MisterAlex

Re : Lancer une appli via navigateur

Bonjour, je suis dans la meme situation que Frz, c'est à dire : lancer une appli graphique sur mon serveur depuis la commande exec de PHP. Je voulais savoir si tu avais trouvé la solution ou si quelqu'un d'autre avait une idée.

Merci

#9 Le 07/07/2007, à 21:52

marc31

Re : Lancer une appli via navigateur

le meilleur moyen de voir si on peut lancer une application X en étant www-data ou a partir du compte (identiant) sous lequel tourne les binaires apache, c'est justement de s'il placer et de faire des essais.

sudo su - www-data

par la suite, il faut travailler avec :
- le display
- les xauthority
- probalement la configuration du compte www-data

si on arrive a lancer une application X depuis le compte, on pourra sans doute en lancer une depuis un script php et par la suite via apache.


ubuntu-gutsy / ATI RC410 [Radeon Xpress 200] + Nvidia GeForce 7300 SE / wireless RaLink RT2500 / toulouse-ouest / xmpp://marc.quinton@jabber.org

Hors ligne

#10 Le 07/07/2007, à 21:55

Link31

Re : Lancer une appli via navigateur

Bon, je n'ai pas vraiment compris le problème de Frz... Mplayer, on peut le lancer en mode texte, on peut le piloter depuis un pipe, etc...

Pour lancer une application graphique à partir de www-data, il suffit de créer un script qui lance cette application appartenant à un utilisateur normal (non root) autorisé à se connecter à l'interface graphique, et de lui positionner le bit suid.

su - utilisateur
nano script.sh
chmod +xs script.sh

www-data pourra ainsi le lancer sous l'identité de l'autre utilisateur.

Hors ligne

#11 Le 09/07/2007, à 08:56

MisterAlex

Re : Lancer une appli via navigateur

Merci pour votre aide!

Alors, je me suis connecté en tant que www-data, et j'ai commencer a tester : les commandes shell passent mais pas le reste. J'ai ensuite modifier le passwd et a la ligne de "www-data", au lieu de /bin/sh j'ai remplacé par /bin/bash.
(j'ai fait ca pour avoir accès aux applications roll je m'égare??)

j'ai aussi essayé de lui passer le X avec "xhost + local:www-data" et la j'arrive a lancer xeyes mais pas les autres appli tel que firefox, ou autre grosse appli.

J'en arrive au script, mais je ne sais pas trop comment m'y prendre.. il faudrait que je l'execute en me faisant passer par un utilisateur ayant les droit. mais le "su -user" me demande mon mot de passe! alors je vois pas.

J'ai aussi regardé au niveau du "bit suid" c'est bien pour autoriser un utilisateur a executer un script meme s'il a pas les droit?

d'avance merci

#12 Le 09/07/2007, à 09:31

Link31

Re : Lancer une appli via navigateur

su - utilisateur pour prendre l'identité de utilisateur
nano script.sh pour créer un script en tant qu'utilisateur
chmod +xs script.sh pour le rendre exécutable et suid.

Ça c'est à faire une fois pour toute, ensuite n'importe qui pourra lancer script.sh en tant qu'utilisateur, et les programmes graphiques lancés à partir de ce scripts auront les même droits qu'utilisateur de se connecter au serveur graphique.

Hors ligne

#13 Le 09/07/2007, à 11:05

MisterAlex

Re : Lancer une appli via navigateur

Bonjour,

alors j'ai essayé ta manip avec un script qui lance xeyes.

tous ce passe bien mais lorsque que je test en "www-data" (sudo su www-data)

il n'a toujours pas les droit sur le X (donc il doit l'executer en tant que lui meme)
voici l'erreur:

Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

Error: Can't open display: :0.0

ps: j'ai créer le script en tant que root
les droits du fichier script.sh sont : -rwsr-sr-x

#14 Le 09/07/2007, à 11:33

Link31

Re : Lancer une appli via navigateur

Non, sous Ubuntu le root ne peut pas se connecter au serveur graphique (et ce n'est pas plus mal comme ça).
Crée-le sous un utilisateur normal, non privilégié, qui peut utiliser le serveur graphique.

Hors ligne

#15 Le 09/07/2007, à 12:48

MisterAlex

Re : Lancer une appli via navigateur

Ah merci pour l'info, je ne savais pas!
Par contre j'ai fais la meme chose avec mon utilisateur principale.
Et il me sors le meme message d'erreur sad
une idée?

#16 Le 09/07/2007, à 13:03

Link31

Re : Lancer une appli via navigateur

Vérifie qu'un serveur X est bien lancé. Si le script est bien suid, les commandes qu'il contient se lancent sous l'identité de son propriétaire, il ne devrait pas y avoir de problème.

Hors ligne

#17 Le 09/07/2007, à 13:16

MisterAlex

Re : Lancer une appli via navigateur

Bon apres plusieurs tests, on voit bien que le processus de mon appli lancer par mon script appartient à l'utilisateur : www-data. Donc en effet,  le suid du script ne marche pas.
Pourtant j'ai bien fais (et refais) :

su monUtilisateur
nano script.sh
chmod +xs script.sh

(les droit sont : "-rwsr-sr-x", (avec un "ls" on voit bien la couleur du script en fond rouge))

#18 Le 09/07/2007, à 13:18

MisterAlex

Re : Lancer une appli via navigateur

Bon apres plusieurs tests, on voit bien que le processus de mon appli lancer par mon script appartient à l'utilisateur : www-data. Donc en effet,  le suid du script ne marche pas.
Pourtant j'ai bien fais (et refais) :

su monUtilisateur
nano script.sh
chmod +xs script.sh

(les droit sont : "-rwsr-sr-x", (avec un "ls" on voit bien la couleur du script en fond rouge))

d'ailleur si j'execute le script en tant que monUtilisateur, ca fonctionne tres bien!

#19 Le 09/07/2007, à 17:11

marc31

Re : Lancer une appli via navigateur

pour info, il y a echange de clés pour les autorisations d'ouverture de fenetres (connexion) sur le serveur X. Voir la command xauth, xauth list, xauth add. Eventuellement xrsh pourrait faire l'affaire, voir une commande ssh avec encapsulation sur flux X11.

Il y a aussi la command xhost :
- "xhost +" : plus de controle d'acces sur le serveur X (via les clés) ; forcement c'est moins securisé
- "xhost + une machine" de memoire

Dernière modification par marc31 (Le 09/07/2007, à 17:14)


ubuntu-gutsy / ATI RC410 [Radeon Xpress 200] + Nvidia GeForce 7300 SE / wireless RaLink RT2500 / toulouse-ouest / xmpp://marc.quinton@jabber.org

Hors ligne