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
今、私は疑問に思っています:
- この問題の原因は Lucid から Maverick への変更点にありますか?
- 私の setcap ソリューションは良いものでしょうか?
- プログラムに問題があるのでしょうか?
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