2011-09-21 88 views
1

我正在編寫一個必須在Fedora Core 4上運行的應用程序。應用程序需要訪問沒有root權限的USB設備。使用libusb-1.0.8我已經成功編寫了除一個問題之外的應用程序。如果我沒有root權限,libusb_open將以-3「拒絕權限」失敗。Linux udev規則似乎不起作用

我讀過我可以用udev規則修改設備的權限。因此,我加入10-local.rules使用以下行到/etc/udev/rules.d中:

BUS=="usb", SYSFS{idVendor}=="040a", SYSFS{idProduct}=="4e00", MODE="0666" 

我複製從udevinfo的輸出上述信息。

即使使用上述規則,設備權限始終最終爲「0644」,我無法從用戶應用程序打開USB設備。即使重新啓動後。

有沒有人有任何建議,我可能做錯了什麼? Fedora Core 4支持我正在嘗試做什麼? 感謝

+0

該libusb的試圖訪問該設備的/ proc /總線/ USB/???哪裏?隨着設備的每次插入而改變。udev日誌輸出表示內核名稱是「hiddev0」。如果我把KERNEL ==「hiddev *」放在規則文件中,我可以成功地控制/ dev/hiddev0上的權限,但是我仍然無法打開設備,因爲我需要/ proc/bus/usb /?上的權限。 ??也要改變。 –

+0

更正:設備是/ proc/bus/004 /?其中004似乎是集線器ID –

回答

1

根據Linux的版本(HAL,udev,hotplug等),修改USB設備的權限似乎至少以3種不同方式處理。經過幾次不成功的嘗試,我終於找到了一個有準確信息的網站。

至少對於Linux 2.6.11,答案是hotplug。解決方案是在/ etc/hotplug/usb中創建一個自定義用戶映射文件。以內置的用戶映射(/etc/hotplug/usb.usermap)爲例。用戶映射文件指定在連接匹配設備時執行的腳本。該腳本還應位於/ etc/hotplug/usb中。

例如,我用我的設備的VID和PID以及執行命名爲chmodmyusbdvc的腳本創建了/etc/hotplug/usb/myusbdvc.usermap。

我還創建的/ etc /熱插拔/ USB/chmodmyusbdvc與後續的內容:

#!/bin/bash 
if [ "${ACTION}" = "add" ] && [ -f "${DEVICE}" ] 
then 
    echo "changing ${DEVICE}" >> /tmp/debug-hotplug 
    chmod 666 "${DEVICE}" 
fi 
+3

是否有一個特定的原因,你爲什麼要保持「網站的準確信息」的祕密? :) – sehe

2

嘗試類似:

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5090", MODE="0666" 

條件在udev規則是棘手的最好的。您可以檢查哪些參數都可以用命令:

udevadm info --attribute-walk --name=<device> 

輸出還包括以下聲明:

A rule to match can be composed by the attributes of the device 
and the attributes from one single parent device. 

另外要注意的結束小號在某些屬性名稱。它出現在父設備中,但不出現在設備本身中。

+0

Fedora Core 4(linux 2.6.11)似乎沒有udevadm。 –

+0

Fedora Core 4(linux 2.6.11)似乎沒有udevadm。 man udev列出了可用的關鍵詞。我已經嘗試了SYSFS和ATTRS,BUS和SUBSYSTEM,用ACTION ==「add」而沒有。我試圖將我的設備添加到默認規則文件(50-udev.rules),沒有運氣。設備仍然顯示0644。 –

+0

哦,我讀了Fedora Core 14,而不是4!你有沒有嘗試啓用udev調試日誌?不要告訴我FC 4沒有日誌! – rodrigo

5

Udev的設置USB權限你的腳本運行後。重命名您的規則,以便文件名以大於50的數字開頭(USB權限在/lib/udev/rules.d/50-udev-default.rules中設置)。由於您的腳本名稱是10 -...,因此它將首先運行,然後重置權限。將文件名更改爲例如99-local.rules。然後它將成爲最後一個運行的腳本之一,並且所有設置都不會被覆蓋。

來源:http://virtuallyhyper.com/2013/02/fixing-android-phone-device-permissions-on-fedora-17/

+0

您的答案遲了2年,我目前還沒有Fedora Core 4安裝程序來檢查您的解決方案是否可行。 –