You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QubesOS:sys-usb管控USB控制器时如何接入指定键鼠到dom0?

现有配置工作原理

1. RPC策略配置

qubes.InputKeyboard和qubes.InputMouse是Qubes内置的RPC服务,作用是允许指定qube将自身连接的键盘/鼠标输入设备转发给目标qube(此处为dom0)。

  • sys-usb dom0 allow,user=root:仅允许sys-usb以root身份向dom0转发键盘、鼠标输入
  • $anyvm $anyvm deny:兜底规则,禁止所有其他qube之间的输入设备转发,规避安全风险

2. grub内核参数usbcore.authorized_default=0

这个内核参数会让所有USB设备刚接入时默认处于未授权状态,即设备不会自动启用。核心作用是阻止恶意USB设备(如BadUSB)接入后自动执行代码,必须通过后续规则手动授权或转发设备。


需求实现方案

你的需求完全可以实现,以下是分步配置方法:

第一步:获取目标键盘/鼠标的设备ID(VID/PID)

  1. 启动sys-usb并打开终端
  2. 运行命令lsusb,找到目标设备条目,格式示例:
    Bus 001 Device 003: ID 1234:5678 Logitech USB Keyboard
    Bus 001 Device 004: ID abcd:wxyz Microsoft Basic Mouse
    
    其中1234是厂商ID(VID),5678是产品ID(PID),记录这两组值。

第二步:在sys-usb中创建udev规则实现设备分流

udev规则用于识别指定USB设备并转发给dom0,同时自动授权其他设备(蓝牙耳机、未知设备)让sys-usb接管。

  1. 在sys-usb终端中创建规则文件:
    sudo nano /rw/config/usb-input-forward.rules
    
  2. 写入以下内容(替换为你自己的VID/PID):
    # 转发指定键盘到dom0
    SUBSYSTEM=="usb", ATTRS{idVendor}=="1234", ATTRS{idProduct}=="5678", ACTION=="add", RUN+="/usr/bin/qvm-send-input dom0 keyboard $kernel"
    
    # 转发指定鼠标到dom0
    SUBSYSTEM=="usb", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="wxyz", ACTION=="add", RUN+="/usr/bin/qvm-send-input dom0 mouse $kernel"
    
    # 自动授权所有其他USB设备(让sys-usb接管)
    SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{authorized}="1"
    
  3. 保存文件后重新加载udev规则:
    sudo udevadm control --reload-rules && sudo udevadm trigger
    

第三步:配置sys-usb权限(无网络+限制root)

  1. 禁用网络:
    在Qubes管理器中右键点击sys-usb → 「Settings」→ 「Network」选项卡,将「NetVM」设为「(none)」并保存。
  2. 限制root权限(可选):
    sys-usb需要root权限管理USB设备,完全移除会导致功能失效,可通过sudo规则限制最小权限:
    • 编辑sudoers文件:sudo visudo
    • 添加规则(替换username为sys-usb的普通用户名):
      username ALL=(ALL) NOPASSWD: /usr/bin/qvm-send-input, /usr/bin/udevadm, /usr/bin/lsusb
      

第四步:调试与验证

  • 重启sys-usb或整个系统
  • 接入目标键盘/鼠标,确认可在dom0正常使用
  • 接入蓝牙耳机或其他未知设备,确认sys-usb可正常识别使用
  • 排查问题时可查看sys-usb日志:sudo journalctl -f,检查udev规则触发情况;在dom0中运行cat /proc/cmdline,确认usbcore.authorized_default=0参数生效

内容的提问来源于stack exchange,提问作者Damian Kęska

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 06:40:26