![将USB设备添加到rules.d](https://linux22.com/image/71846/%E5%B0%86USB%E8%AE%BE%E5%A4%87%E6%B7%BB%E5%8A%A0%E5%88%B0rules.d.png)
我在添加 USB 设备时遇到问题rules.d list
,我希望无需 root 即可使用它。
这是我的 USB 设备:
Bus 001 Device 007: ID 1162:2200 Secugen Corp.
这是我在以下位置所做的条目/etc/udev/rules.d/98-secugen-usb-device.rules
:
SYSFS{idVendor}=="1162", SYSFS{idProduct}=="2200", SYMLINK+="input/fdu05-%k", MODE="0660", GROUP="SecuGen" KERNEL=="uinput", MODE="0660", GROUP="SecuGen"
我不太确定这是什么SYMLINK+="input/fdu05-%k
部分,它是在 中设置的readme.txt
。
不幸的是这个规则不起作用。通常它非常简单,添加vendorId/productId并且它可以工作,但这次不行。
有什么建议么?
更新:这是我得到的输出dmesg
:
usb 1-1.1.3: new high-speed USB device number 12 using ehci-pci
usb 1-1.1.3: New USB device found, idVendor=1162, idProduct=2200
usb 1-1.1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1.1.3: Product: SecuGen USB U20
usb 1-1.1.3: Manufacturer: SecuGen Corp.
这就是我的样子/dev/input
:
├── by-id
│ ├── usb-LITEON_Technology_USB_Multimedia_Keyboard-event-kbd -> ../event0
│ ├── usb-Microsoft_Comfort_Mouse_6000-event-mouse -> ../event1
│ └── usb-Microsoft_Comfort_Mouse_6000-mouse -> ../mouse0
├── by-path
│ ├── pci-0000:00:1a.0-usb-0:1.2:1.0-event-kbd -> ../event0
│ ├── pci-0000:00:1a.0-usb-0:1.3:1.0-event-mouse -> ../event1
│ ├── pci-0000:00:1a.0-usb-0:1.3:1.0-mouse -> ../mouse0
│ └── platform-pcspkr-event-spkr -> ../event4
├── event0
├── event1
├── event10
├── event2
├── event3
├── event4
├── event5
├── event6
├── event7
├── event8
├── event9
├── mice
└── mouse0
我从以下地方得到的日志unbuffer udevadm monitor --environment
:
UDEV [4656.200575] add /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1.3 (usb)
ACTION=add
BUSNUM=001
DEVNAME=/dev/bus/usb/001/016
DEVNUM=016
DEVPATH=/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1.3
DEVTYPE=usb_device
ID_BUS=usb
ID_MODEL=SecuGen_USB_U20
ID_MODEL_ENC=SecuGen\x20USB\x20U20\x20\x20\x20\x20\x20\x20\x20
ID_MODEL_ID=2200
ID_REVISION=2206
ID_SERIAL=SecuGen_Corp._SecuGen_USB_U20
ID_USB_INTERFACES=:ffffff:
ID_VENDOR=SecuGen_Corp.
ID_VENDOR_ENC=SecuGen\x20Corp.\x20\x20\x20\x20
ID_VENDOR_FROM_DATABASE=Secugen Corp.
ID_VENDOR_ID=1162
MAJOR=189
MINOR=15
PRODUCT=1162/2200/2206
SEQNUM=1702
SUBSYSTEM=usb
TYPE=0/0/0
UDEV_LOG=6
USEC_INITIALIZED=56185634
UDEV [4657.235375] add /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1.3/1-1.1.3:1.0 (usb)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1.3/1-1.1.3:1.0
DEVTYPE=usb_interface
ID_VENDOR_FROM_DATABASE=Secugen Corp.
INTERFACE=255/255/255
MODALIAS=usb:v1162p2200d2206dc00dsc00dp00icFFiscFFipFFin00
PRODUCT=1162/2200/2206
SEQNUM=1703
SUBSYSTEM=usb
TYPE=0/0/0
UDEV_LOG=6
USEC_INITIALIZED=186134
adb_user=yes
发行版:Debian GNU/Linux 8 (jessie)
答案1
您好,欢迎来到 Unix & Linux StackExchange!
您似乎唯一要问的是规则SYMLINK+="input/fdu05-%k"
中部分的含义udev
。这告诉udev
我们自动创建一个指向您设备的符号链接,/dev/input/
其名称为fdu05-<kernel name of the device>
但我理解,既然您提到您不想root
使用该设备,那么这就是您制定此规则的主要目标,对吗?如果您看到的话,重要的部分是规则的用户权限部分,即MODE
和GROUP
。出于安全原因,请将模式保留为 0660(对所有者和组的读/写权限,但对其他人没有权限)并检查您的用户是否属于“SecuGen”组。这可以在终端中运行轻松检查
id <username>
如果用户不属于该组,则将其添加到运行中
# usermod -a -G <username> SecuGen
当然,您也可以更改规则,以便GROUP
拥有您想要的用户组。
最后,记住udev
每当您更改任何规则时都要重新启动,或者,如果您有udevadm
,您可以要求udev
重新加载正在运行的规则
# udevadm control --reload-rules
祝你好运!
答案2
你有这个规则
SYSFS{idVendor}=="1162", SYSFS{idProduct}=="2200", SYMLINK+="input/fdu05-%k", MODE="0660", GROUP="SecuGen" KERNEL=="uinput", MODE="0660", GROUP="SecuGen"
该SYMLINK
条目将设备的符号链接添加到/dev/input/fdu05-%k
,其中%k
替换为该设备的内核名称。 (您可以在udev(7) 的手册页.)
你有两个GROUP
定义;预计只有一个。
您定义了 Linux 组“SecuGen”吗?您可以运行getent group SecuGen
查看它是否已定义,或者在简单的系统上只需查看/etc/group
.如果没有,您需要添加它,以便规则可以将设备设置到该组。