Ubuntu 10.10 (Maverick) /dev/bus/usb 非ルート ioctl が拒否されました

Ubuntu 10.10 (Maverick) /dev/bus/usb 非ルート ioctl が拒否されました

Ubuntu 10.10 (マーベリック)。

garmin_save_runs プログラム (garmin-forerunner-tools パッケージの一部) を通常のユーザーとして実行すると問題が発生しますが、sudo で実行すると機能します。非 sudo 実行は Ubuntu 10.04 (Lucid) では機能していましたが、パッケージはあまり変更されていないため、アップグレードに伴って一部の権限が変更されたと思われます。

プログラムを sudo として実行することで回避できることが分かりました: $ sudo setcap CAP_DAC_OVERRIDE=ep /usr/bin/garmin_save_runs

今、私は疑問に思っています:

  1. この問題の原因は Lucid から Maverick への変更点にありますか?
  2. 私の setcap ソリューションは良いものでしょうか?
  3. プログラムに問題があるのでしょうか?

strace 抜粋:

open("/dev/bus/usb/001/010", O_RDWR)    = -1 EACCES (Permission denied)
open("/dev/bus/usb/001/010", O_RDONLY)  = 3
ioctl(3, USBDEVFS_IOCTL or USBDEVFS_IOCTL32, 0x7ffffabef170) = -1 EPERM (Operation not permitted)
close(3)                                = 0
open("/dev/bus/usb/001/002", O_RDWR)    = -1 EACCES (Permission denied)
open("/dev/bus/usb/001/002", O_RDONLY)  = 3
ioctl(3, USBDEVFS_IOCTL or USBDEVFS_IOCTL32, 0x7ffffabef170) = -1 EPERM (Operation not permitted)
close(3)                                = 0
open("/dev/bus/usb/001/001", O_RDWR)    = -1 EACCES (Permission denied)
open("/dev/bus/usb/001/001", O_RDONLY)  = 3
ioctl(3, USBDEVFS_IOCTL or USBDEVFS_IOCTL32, 0x7ffffabef170) = -1 EPERM (Operation not permitted)
close(3)                                = 0

関連情報