无法使用 udev 规则更改 Xen/QubesOs VM 中的智能卡设备所有权
Failure to use udev rule to change smart card device ownership in Xen/QubesOs VM
在 Xen VM 中(在 QubesOS 中),我可以看到我递交的 USB 智能卡 reader 是这样的:
Prompt> lsusb
Bus 002 Device 002: ID 04e6:5116 SCM Microsystems, Inc. SCR331-LC1 / SCR3310 SmartCard Reader
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...
用 udevadm
进行更深入的观察会得到:
Prompt> udevadm info -a -p $(udevadm info -q path -n /dev/bus/usb/002/002)
looking at device '/devices/platform/vhci_hcd/usb2/2-1':
KERNEL=="2-1"
SUBSYSTEM=="usb"
DRIVER=="usb"
ATTR{authorized}=="1"
ATTR{avoid_reset_quirk}=="0"
ATTR{bConfigurationValue}=="1"
ATTR{bDeviceClass}=="00"
ATTR{bDeviceProtocol}=="00"
ATTR{bDeviceSubClass}=="00"
ATTR{bMaxPacketSize0}=="32"
ATTR{bMaxPower}=="100mA"
ATTR{bNumConfigurations}=="1"
ATTR{bNumInterfaces}==" 1"
ATTR{bcdDevice}=="0204"
ATTR{bmAttributes}=="a0"
ATTR{busnum}=="2"
ATTR{configuration}=="CCID Class"
ATTR{devnum}=="2"
ATTR{devpath}=="1"
ATTR{idProduct}=="5116"
ATTR{idVendor}=="04e6"
ATTR{ltm_capable}=="no"
ATTR{manufacturer}=="SCM Microsystems Inc."
ATTR{maxchild}=="0"
ATTR{product}=="SCR3310 v2.0 USB SC Reader"
ATTR{quirks}=="0x0"
ATTR{removable}=="unknown"
ATTR{speed}=="12"
ATTR{urbnum}=="14"
ATTR{version}==" 2.00"
looking at parent device '/devices/platform/vhci_hcd/usb2':
KERNELS=="usb2"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
...
尽管权限设置如下:
Prompt> ls -la /dev/bus/usb/002/002
crw-rw-r-- 1 root root 189, 129 May 3 23:01 /dev/bus/usb/002/002
调用 gpg2 --card-status
的结果与 root
一样,但作为普通用户会产生 Card error
。
我尝试使用以下 udev
规则 (/etc/udev/rules.d/51-SCR3310.rules
) 来解决这个问题:
KERNEL=="usb*", SUBSYSTEM=="usb", ATTRS{idVendor}=="04e6", ATTRS{idProduct}=="5116", MODE="0660", GROUP="user"
但无论我做什么,我都无法让普通用户通过 gpg2
.
访问 reader
我哪里搞砸了?
经过多次谷歌搜索(也就是启动页面),我终于找到了答案 here。
除了需要包含以下内容的 /etc/udev/rules.d/71-gpg-ccid.rules
文件之外,udev 还允许我的用户组 (user
) 访问设备(取自 here)
ACTION=="add", SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="04e6", ENV{ID_MODEL_ID}=="5116", MODE="660", GROUP="user"
我被 gnome-keyring
与 gpg-agent
的干扰击中并添加
Hidden=true
X-GNOME-Autostart-enabled=false
到 /etc/xdg/autostart/gnome-keyring-ssh.desktop
和 gnome-keyring-gpg.desktop
集市智能卡访问结束作为正常用户工作。
在 Xen VM 中(在 QubesOS 中),我可以看到我递交的 USB 智能卡 reader 是这样的:
Prompt> lsusb
Bus 002 Device 002: ID 04e6:5116 SCM Microsystems, Inc. SCR331-LC1 / SCR3310 SmartCard Reader
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...
用 udevadm
进行更深入的观察会得到:
Prompt> udevadm info -a -p $(udevadm info -q path -n /dev/bus/usb/002/002)
looking at device '/devices/platform/vhci_hcd/usb2/2-1':
KERNEL=="2-1"
SUBSYSTEM=="usb"
DRIVER=="usb"
ATTR{authorized}=="1"
ATTR{avoid_reset_quirk}=="0"
ATTR{bConfigurationValue}=="1"
ATTR{bDeviceClass}=="00"
ATTR{bDeviceProtocol}=="00"
ATTR{bDeviceSubClass}=="00"
ATTR{bMaxPacketSize0}=="32"
ATTR{bMaxPower}=="100mA"
ATTR{bNumConfigurations}=="1"
ATTR{bNumInterfaces}==" 1"
ATTR{bcdDevice}=="0204"
ATTR{bmAttributes}=="a0"
ATTR{busnum}=="2"
ATTR{configuration}=="CCID Class"
ATTR{devnum}=="2"
ATTR{devpath}=="1"
ATTR{idProduct}=="5116"
ATTR{idVendor}=="04e6"
ATTR{ltm_capable}=="no"
ATTR{manufacturer}=="SCM Microsystems Inc."
ATTR{maxchild}=="0"
ATTR{product}=="SCR3310 v2.0 USB SC Reader"
ATTR{quirks}=="0x0"
ATTR{removable}=="unknown"
ATTR{speed}=="12"
ATTR{urbnum}=="14"
ATTR{version}==" 2.00"
looking at parent device '/devices/platform/vhci_hcd/usb2':
KERNELS=="usb2"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
...
尽管权限设置如下:
Prompt> ls -la /dev/bus/usb/002/002
crw-rw-r-- 1 root root 189, 129 May 3 23:01 /dev/bus/usb/002/002
调用 gpg2 --card-status
的结果与 root
一样,但作为普通用户会产生 Card error
。
我尝试使用以下 udev
规则 (/etc/udev/rules.d/51-SCR3310.rules
) 来解决这个问题:
KERNEL=="usb*", SUBSYSTEM=="usb", ATTRS{idVendor}=="04e6", ATTRS{idProduct}=="5116", MODE="0660", GROUP="user"
但无论我做什么,我都无法让普通用户通过 gpg2
.
我哪里搞砸了?
经过多次谷歌搜索(也就是启动页面),我终于找到了答案 here。
除了需要包含以下内容的 /etc/udev/rules.d/71-gpg-ccid.rules
文件之外,udev 还允许我的用户组 (user
) 访问设备(取自 here)
ACTION=="add", SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="04e6", ENV{ID_MODEL_ID}=="5116", MODE="660", GROUP="user"
我被 gnome-keyring
与 gpg-agent
的干扰击中并添加
Hidden=true
X-GNOME-Autostart-enabled=false
到 /etc/xdg/autostart/gnome-keyring-ssh.desktop
和 gnome-keyring-gpg.desktop
集市智能卡访问结束作为正常用户工作。