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 je l'ai volontairement épuré:


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.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') ***


[...]


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 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 tres 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 les modifications apportées au 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

[...]

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.

version 2 par Eric Barons

Valid XHTML 1.0! Valid CSS!