Linux Udev pour setter les permissions sur les peripheriques USB

Suite à mon article précédant ou mon Raspberry Pi communique avec une Arduino Leonardo grâce à la lib libusb… j’ai voulu lancer mon programme avec un utilisateur non root et j’obtiens l’erreur suivante :

libusb couldn't open USB device /dev/bus/usb/002/005: Permission denied

Après quelques recherches sur Internet :

  • http://ubuntuforums.org/showthread.php?t=1939231
  • https://groups.google.com/forum/#!msg/ultra-cheap-sdr/bNn5naF4nwg/u_FjO7xC3rcJ
  • https://wiki.archlinux.org/index.php/Map_Custom_Device_Entries_with_udev

Je me rends compte que le problème vient de Udev qui crée le périphérique lors du branchement avec un accès en écriture uniquement pour le root. Pour pallier ce problème une solution simple et de créer une règle UDEV pour changer la création du périphérique à la volée. Il existe déjà beaucoup de documentation sur UDEV et je n’ai pas l’intention de faire du copier-coller 😉

Voilà la règle ajoute dans mon cas pour changer les permissions du périphérique Arduino Leonardo :

pi@raspberrypi /var/www $ sudo cat /etc/udev/rules.d/10-arduinoLeo.rules
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="8036", MODE:="0777"

Fini les problèmes 😉

Bonus : Protéger le site web par mot de passe (serveur lighttpd) :
http://www.cyberciti.biz/tips/lighttpd-setup-a-password-protected-directory-directories.html