如何让 sc-controller 在 20.04 上运行

如何让 sc-controller 在 20.04 上运行

Apparmor 将拒绝 sc-controller 的 snap 或 appimage 访问 uinput,导致 sc-controller 显示错误 1。20.04 的 deb 不可用,并且源需要 python 2.7。

/var/log/kern.log

audit: type=1400 audit(1588199484.212:67): apparmor="DENIED" operation="open" profile="snap.sc-controller.sc-controller" name="/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/busnum" pid=2067 comm="python2" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0

答案1

来源:访问 dev uinput 的最佳方式在 snapcraft.io 论坛上。感谢 jdstrand 和 mcphail sc-controller 的开发人员。sc-controller 目前正在更新到 python3,但在该工作完成之前,使用 snap 是将 0.4.7 版本打包到 20.04 的合理方法。

Sc-controller 需要对设备进行相当深入的访问才能在严格限制下运行。对系统进行的以下更改可能会允许 rouge snap 注入按键和鼠标事件继续风险自负。

  1. 将该行添加/dev/uinput rw,snap.sc-controller.sc-controller。我将其添加到第 30 行,位置和两个空格的缩进似乎很重要。

sudo nano /var/lib/snapd/apparmor/profiles/snap.sc-controller.sc-controller

  1. 将更新的 apparmor 规则加载到内核中:
sudo apparmor_parser -r /var/lib/snapd/apparmor/profiles/snap.sc-controller.sc-controller
  1. 如果你的系统上没有这个/etc/udev/rules.d/70-snap.sc-controller.rules,你现在可以测试你的 snap。如果你有,请添加:
# test
KERNEL=="uinput", TAG+="snap_sc-controller"
  1. 应用规则

跑步:

sudo udevadm trigger --subsystem-match=misc # make the rules apply
#snap run --shell yoursnap.cmd  # launch a shell under yoursnap.cmd
  1. 在与 snap shell 不同的终端中运行 udevadm 并检查 TAGS 行。它现在应该包括snap_sc-controller
udevadm info /dev/uinput
...
E: TAGS=:snap_sc-controller:uaccess:seat:
  1. 可能需要重新启动才能完全实施更改并允许 sc-controller snap 正常运行。

相关内容