udevでデバイスファイルのパーミッション制御

LinuxマシンにUSBでデジカメを繋いでgphoto2でファイル保存するのはいいけど、一般ユーザでは権限がなく毎回rootになるのは面倒。

なもんでちょっと調べてみた。

# lsusb
Bus 004 Device 003: ID 04cb:01c1 Fuji Photo Film Co., Ltd
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000

Bus 004 の Device 003 にデバイスが割り当てられてるのでもっと詳しく表示

# udevinfo -a -p /sys/class/usb_device/usbdev4.3/
  ...

  looking at parent device '/devices/pci0000:00/0000:00:10.4/usb4/4-4':
    KERNELS=="4-4"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ...
    ATTRS{product}=="USB PTP Camera"
    ...

いろいろ表示されたけど ATTRS{product} がこのデバイス特定にふさわしそうなので

# vi /etc/udev/rules.d/z99_mydevice.rules

BUS="usb", ATTRS{product}=="USB PTP Camera", MODE="0666"

とやってデフォルトの権限を666にしてみた。

/etc/init.d/udev restartしたあとUSBケーブル差しなおしたら、めでたく一般ユーザでいろいろできて一安心。

他のデバイスでも同様にやればいいんだろうなぁ、きっと。