:: Apinc :: Archilinux :: Fro4nix :: GeexdB :: Gnuworld-fr :: Knoppix-fr ::  Lea-linux :: Linucie ::  Octoz ::  Les pingunautes ::

Purée de Linux

Dernière mise à jour de la page le 11 février 2005.

Menu

Gestion des droits utilisateur sur un Appareil photo numérique USB

Par ebdomino, le 19/04/2004

Le problème est simple, l'appareil photo numérique (apn), est reconnu en user et en root, mais seul root peut récupèrer les photos.

L'erreur rencontrée: la commande gphoto2 --debug --list-files

Voici la sortie de cette commande en user:

eb@ebdomino:~$ gphoto2 --debug --list-files
0.000226 main(2): TOUJOURS FOURNIR LES LIGNES CI-DESSOUS 
LORS DE L'ENVOI DE MESSAGE(S) DE DÉBOGAGE 
À LA LISTE DE DIFFUSION :
0.000984 main(2): gphoto2 2.1.4
0.001221 main(2): gphoto2 has been compiled with the following options:
0.001535 main(2): + gcc (C compiler used)
0.001788 main(2): + no popt (for handling command-line parameters)
0.002313 main(2): + exif (for displaying EXIF information)
0.002670 main(2): + cdk (for accessing configuration options)
0.002943 main(2): + no aa (for displaying live previews)
0.003204 main(2): + jpeg (for displaying live previews in JPEG format)
0.003509 main(2): + readline (for easy navigation in the shell)
0.003796 main(2): libgphoto2 2.1.4
0.004027 main(2): libgphoto2 has been compiled with the following options:
0.004335 main(2): + gcc (C compiler used)
0.004574 main(2): + EXIF (for special handling of EXIF files)
0.004839 main(2): + no ltdl (working around buggy libltdl, eh? :-)
0.005113 main(2): + /proc/meminfo (adapts cache size to memory available)
0.005432 main(2): libgphoto2_port 0.5.1
0.005670 main(2): libgphoto2_port has been compiled with the following options:
0.005962 main(2): + gcc (C compiler used)
0.006196 main(2): + USB (for USB cameras)
0.006457 main(2): + serial (for serial cameras)
0.006702 main(2): + no resmgr (serial port access and locking)
0.006972 main(2): + no baudboy (serial port locking)
0.007227 main(2): + no ttylock (serial port locking)
0.007501 main(2): + no lockdev (serial port locking)
0.007752 main(2): + no ltdl (working around buggy libltdl, eh? :-)
0.008037 foreach(2): Executing action 'List Files' for folder '/'.
0.009157 gphoto2-camera(2): Listing files in '/'...
0.010199 gphoto2-camera(2): Initializing camera...
0.015544 gphoto2-port-usb(1): Looking for USB device 
(vendor 0x3f0, product 0x6a02)... found.
0.015906 gphoto2-port-usb(1): Detected defaults: config 1, 
interface 0, altsetting 0, inep 83, outep 04, intep 85, 
class 06, subclass 01
0.016361 gphoto2-camera(2): Loading '/usr/lib/gphoto2/2.1.4/libgphoto2_ptp2.so'...
0.017073 gphoto2-port(2): Opening USB port...
0.017935 gphoto2-port(0): Impossible d'utiliser l'interface 0 
(Opération non permise). Assurez-vous qu'aucun programme ou module noyau 
(par ex. dc2xx ou stv680) n'utilise le périphérique 
et que vous avez bien accès en lecture/écriture au descripteur de périphérique.
0.018921 context(0): Une erreur est intervenue dans la 
bibliothèque d'entrée-sortie 
('Impossible d'utiliser le périphérique USB'): 
Impossible d'utiliser l'interface 0 (Opération non permise). 
Assurez-vous qu'aucun programme ou module noyau (par ex. 
dc2xx ou stv680) n'utilise le périphérique et que vous avez bien accès 
en lecture/écriture au descripteur de périphérique.

*** Erreur ***
Une erreur est intervenue dans la bibliothèque d'entrée-sortie 
('Impossible d'utiliser le périphérique USB'): Impossible d'utiliser 
l'interface 0 (Opération non permise). 
Assurez-vous qu'aucun programme ou module noyau 
(par ex. dc2xx ou stv680) n'utilise le périphérique et 
que vous avez bien accès en lecture/écriture au 
descripteur de périphérique.

*** Erreur (-53: 'Impossible d'utiliser le périphérique USB') ***

Pour obtenir les messages de débogage, merci d'utiliser l'option --debug.
Ces messages peuvent aider à trouver une solution à votre problème.
Si vous avez l'intention d'envoyer un message d'erreur ou de débogage 
à la liste de distribution des développeurs gPhoto ,
merci de lancer gphoto2 comme suit :

env LANG=C gphoto2 --debug --debug --list-files

Please make sure there is sufficient quoting around the arguments.

0.023528 gp-camera(2): Freeing camera...
0.023814 gphoto2-port(2): Freeing port...
0.024052 gphoto2-port(2): Closing port...
0.024398 gphoto2-port(0): Impossible de relâcher l'interface 0 
(Opération non permise).
0.024874 libgphoto2/gphoto2-filesys.c(2): Clearing fscache LRU list...
0.025200 libgphoto2/gphoto2-filesys.c(2): fscache LRU list already empty
0.025522 gphoto2-filesystem(2): Internally deleting all folders from '/'... 

Voila le début de la sortie en root

0.008224 foreach(2): Executing action 'List Files' for folder '/'.
0.009202 gphoto2-camera(2): Listing files in '/'...
0.010248 gphoto2-camera(2): Initializing camera...
0.010729 gphoto2-port-usb(1): Looking for USB device (vendor 0x3f0, product 0x6a02)... found.
0.011111 gphoto2-port-usb(1): Detected defaults: config 1, interface 0, altsetting 0, inep 83, 
outep 04, intep 85, class 06, subclass 01
0.011570 gphoto2-camera(2): Loading '/usr/lib/gphoto2/2.1.4/libgphoto2_ptp2.so'...
0.012372 gphoto2-port(2): Opening USB port...
0.013014 gphoto2-port(2): Setting timeout to 8000 millisecond(s)...
0.013420 ptp(2): PTP: Opening session
0.013689 gphoto2-port(2): Writing 16=0x10 byte(s) to port...
0.013983 gphoto2-port(3): Hexdump of 16 = 0x10 bytes follows:
0000 10 00 00 00 01 00 02 10-00 00 00 00 01 00 00 00 ...............

Les photos sont donc accessibles en root mais pas pour l'user.

Pour régler le problème: Configuration de hotplug

La solution est relativement simple, assurez d'avoir installer hotplug. Nous nous basons sur la doc de gphoto2, trouvée à cette adresse: doc gphoto sur les permissions usb

Testez avant tout cette manipulation:
adduser votreuser camera
Cela vous ajoutera au groupe camera, sortez de botre session et reconnectez vous et restestez la connexion, si cela ne fonctionne pas continuez la manipulation.

1/d'abord vous devez mettre le résultat de la sortie de la première commande (print-usb-usermap) dans /etc/hotplug:

/usr/lib/libgphoto2-2/print-usb-usermap > /etc/hotplug/usb/usbcam.usermap 

Cela va créer un fichier de configuration, pour les appareils photo numériques usb, pour hotplug.

2/Vous devez créer un script de gestion de votre apn et de ses droits en choisissant et en éditant un des scripts présents dans: /usr/share/doc/libgphoto2-2/linux-hotplug

Vous avez le choix entre quatre scripts (je vous laisse lire les commentaires sur le lien suscité, ils sont très clair), pour ma part j'ai pris celui qui me permettais, d'utiliser une interface graphique sous X, comme gtkam ou digikam: usbcam.x11-app.Copiez celui de votre choix dans /etc/hotplug/usb/ en le renommant usbcam

cp -a /usr/share/doc/libgphoto2-2/linux-hotplug/usbcam.x11-app /etc/hotplug/usb/usbcam

Ensuite éditez le et configurez le à votre convenance, voici le mien.

#!/bin/bash
# $Id: usbcam.x11-app,v 1.3 2003/10/30 16:27:08 hun Exp $
#
# /etc/hotplug/usb/usbcam
#
# Sets up newly plugged in USB camera so that just one certain user
#ici j'ai remplacé root par l'user pour avoir acces à l'appareil USER=eb
# can access it from user space. (Replace root by the user you want # to have access to the cameras.) # It then runs the X11 application (gtkam is used as an example)
#ici je choisis l'application graphique pour gérer l'appareil, par défaut gtkam, mais pour moi digikam.
X11_APP=/usr/bin/digikam # on the X11 display (:0 should work on most single user workstations) DISPLAY=:0 # in the directory (~$USER is just the user's home directory) DIRECTORY=~$USER # # Note that for this script to work, you'll need all of the following: # a) a line in the file /etc/hotplug/usermap that corresponds to the # camera you are using. You can get the correct lines for all cameras # supported by libgphoto2 by running "print-usb-usermap". # b) run your camera software as the user given above # c) a Linux kernel supporting hotplug and usbdevfs # d) the hotplug package (http://linux-hotplug.sourceforge.net/) # e) su # f) env # g) X11 # # In the usermap file, the first field "usb module" should be named # "usbcam" like this script. # # Script written by Trevor Woerner but slightly adapted for inclusion # into libgphoto2. SU=/bin/su ENV=/usr/bin/env if [ "${ACTION}" = "add" ] && [ -f "${DEVICE}" ] then chmod a-rwx "${DEVICE}" chown "${USER}" "${DEVICE}" chmod u+rw "${DEVICE}" if [ "${USER}" != "root" ] then # we don't want to run this as root. definitely not. cd "${DIRECTORY}" usrhome=~${USER} "${SU}" "${USER}" -c "${ENV} DISPLAY=${DISPLAY} HOME=${usrhome} ${X11_APP}" fi fi

dernière étape rendre le script éxécutable

chmod +x /etc/hotplug/usb/usbcam

Et voila c'est terminé, branchez votre apn, et cela va lancer l'application choisie, vous n'avez plus qu'a faire des films et des photos.

Commentaires

bravo !

Message posté par leo le 2005-02-08 à 06:00:48

Cette astuce fonctionne très bien, ça faisait un moment que je cherchais à travailler mes photos entre un CanonShot A95 et mon pingouin préféré (kaella/debian).
avec les quelques manip, 10 minutes après, la carte de mon appareil photo était considérée comme un disque avec digikam et je pouvais déplacer mes fichiers et les retravailler.
Cerise sur le gateau, les droits d'accès ne sont plus root, ils sont pour mon utilisateur !
Alors, bravo et encore merci !
Léo

bravo bis

Message posté par Ed le 2005-06-15 à 16:42:45

Oui, merci a toi, c'est tres facile a faire et ca marche tres bien. C'est tres bien explique comment faire, voila tout. ;)

bravo ter

Message posté par gillos le 2005-07-20 à 10:31:40

ca marche pour mon CANON IXUS 330, avec gphoto2 sous Debian sarge (3.1)

Probleme sous Debian Sid

Message posté par Virginie le 2005-08-03 à 05:00:42

Bonjour,

Sous Debian Sid et en tant que user, pour que digikam soit lancé, il faut que je lance:

/etc/init.d/hotplug restart

chaque fois que je veux accéder à mon APN.

Sous root, je n'ai pas à le faire. Je lance Digikam et la connexion à l'APN se fait correctement.
Mais en tant que user, Digikam refuse de se connecter et je suis donc obligé de relancer hotplug.

Si quelqu'un à une idée du problème ?

Pascal

Ajouter un commentaire

Titre :

Par :
Courriel* :
Site web :

Commentaire :

* Le courriel ne sera pas affiché !

Google

sur :
le Web
Purée de Linux

Ce site devrait être valide XHTML 1.0 | © Purée de Linux