Sous Debian Squeeze j’ai créé une petite interface pour programmer une carte à base de PIC18 (pour plus de convivialité en fait).
L’interface est réalisée à partir de scripts CGI écrits en scripts Shell.
Problème: piklab-prog ne fonctionne pas depuis l’interface web avec l’utilisateur www-data (ps axu => www-data).
Je sais que piklab-prog fonctionne puisque je peux programmer le PIC depuis le terminal « en manuel ». Certes avec l’utilisateur « test » créé pour se logger sous Debian.
L’utilisateur www-data fait partie du groupe microchip qui a tous les droits sur le device USB ICD2.
J’ai créé un répertoire /home/www-data et j’ai modifié en conséquence le « home directory » dans /etc/password. Mais rien n’y fait.
Le log ci-dessous est retourné par piklab-prog lors de son appel:
trying to create local folder /.kde: Permission denied
trying to create local folder /.kde: Permission denied
piklab-prog(2128): Session bus not found
KCrash: Application 'piklab-prog' crashing...
Warning: $HOME not set!
Unable to start Dr. Konqi
Version de piklab installée:
test@debian:~$ piklab-prog -v
Qt: 4.6.3
KDE Development Platform: 4.4.5 (KDE 4.4.5)
Piklab Programmer Utility: 0.16.2
Quelqu’un aurait-il déjà fait la même manip ?
Ou bien le message éclaire-t-il un gourou de piklab ?
La solution est peut-être idiote mais je patauge depuis une bonne semaine.
Merci d’avance pour votre aide.
Je n’y connais rien, mais visiblement il ne trouve par le $HOME pour y créer un répertoire .kde.
Question bête : ton application marche depuis une vraie console (sans X) ? (ctrl+alt+F1 par exemple) Elle semble nécessiter des librairies kde/Qt.
Si oui, alors il faut que tu regardes comment gérer les variables d’environnement dans ton serveur web pour passer $HOME = /home/www-data ou équivalent, déjà pour voir.
A première vue, je rencontre le même message d’erreur dans la console.
Cela donne l’impression que le script CGI sous apache s’exécute sans faire appel au serveur X11.
[quote=« mathur1 »]A première vue, je rencontre le même message d’erreur dans la console.
Cela donne l’impression que le script CGI sous apache s’exécute sans faire appel au serveur X11.
Curieux, curieux…[/quote]
Ah ? Moi j’aurais plutôt trouvé curieux qu’apache arrive à faire fonctionner un logiciel nécessitant X11
Essaie de résoudre le problème en console, pour voir si la solution peut se transposer à un script cgi apache.
Bon bah, j’ai bien l’impression que ce problème est insoluble.
piklab-prog, bien qu’étant un programme en ligne de commande, veut absolument utiliser kde un minimum (ou qt).
Donc en gros, à part faire un gros script shell comme celui existant et « l’exécuter à la mimine », je ne sais pas comment faire.
Du coup cela rejoins ton point de vue sur l’exécution d’applis X11 sous Apache (logique en même temps).
Je ne connais pas se programme.Tu en fait quoi ? Tu le lance avec des argument qui changent ? Tu récupère sa sortie ?
Rien empêche de faire en sorte de faire communiquer www-data avec un autre utilisateur de la machine, mais l’IPC approprié dépend de la communication que tu cherche à avoir.
Les arguments du programme restent les mêmes (aussi bien dans le script bash que le script cgi).
Je récupère en effet le retour du programme avec les back-quotes ``
Le programme communique avec une sonde de programmation USB (ICD2). Cette sonde est accessible par les membres du groupe microchip créé pour l’occasion et qui contient les utilisateurs “test” et “www-data”.
Je ne connais pas trop le système des IPC.
Quelle serait ton idée en fait ?
Ce que je souhaites faire c’est que le user www-data puisse appeler le programme comme le ferait l’utilisateur “test” dans un terminal gnome. Mais il semblerait que je me heurte au fait que, bien que le programme piklab-prog soit la version en ligne de commande du GUI piklab, piklab-prog nécessite d’être exécuté sous X11.
Il y a deux solutions pour ça :
[ul]
[li]augmenter les privilèges de www-data pour qu’il puisse utiliser une session graphique, ce qui peut poser des problèmes de sécurité[/li]
[li]faire communiquer ton script avec un autre programme lancé en tant que test, pour avoir une séparation des privilèges[/li][/ul]
Tu peut lancer piklab avec l’utilisateur test depuis un TTY de la machine ?
La première solution (privilèges) me plairait assez. comme c’est pour un banc de test qui ne sera jamais connecté au réseau extérieur, il n’y a pas trop de risques pour la sécurité du système.
Par contre j’ai effectué quelques petites recherches sur google et j’avoue ne pas trop trouver mon bonheur.
Aurais-tu un petit indice ? (pas forcément la solution, faut quand même que je justifie mon salaire )