我在 libvirt 中有一个lxc
类型 guest,我通过 USB 设备传递给它,如下所示:
<hostdev mode="subsystem" type="usb" managed="yes">
<source>
<vendor id="0x10c4"/>
<product id="0xea60"/>
<address bus="1" device="10"/>
</source>
</hostdev>
设备显示如下/dev/bus/usb/001/010
:
crwx------ 1 root root 189, 9 Sep 5 23:21 /dev/bus/usb/001/010
添加这样的 udev 规则
SUBSYSTEM=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", GROUP="hass", MODE="0660"
然后运行例如
$ udevadm test /devices/pci0000:00/0000:00:07.1/0000:04:00.3/usb1/1-1/1-1.3
确实根据需要更改所有者/权限。然而,重启后权限会被重置,因为 systemd 默认情况下不会在容器中运行 udev:
systemd[1]: Rule-based Manager for Device Events and Files was skipped because of a failed condition check (ConditionPathIsReadWrite=/sys).
LXC 本身显然支持诸如lxc.cgroup.devices.allow
解决此问题的指令。更改 libvirt LXC guest 设备权限的最佳方法是什么?
我想避免通过 libivrt 主机上的 udev 规则设置权限,因为这需要保持 uid/gid 与来宾同步。
访客是Arch,主机是Debian。