Ubuntu 10.10(Maverick)/dev/bus/usb 非 root ioctl 被拒绝

Ubuntu 10.10(Maverick)/dev/bus/usb 非 root ioctl 被拒绝

Ubuntu 10.10(Maverick)。

我以普通用户身份运行程序 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

相关内容