允许一个进程访问 /dev/uninput,而不会完全损害安全性

允许一个进程访问 /dev/uninput,而不会完全损害安全性

Steam 家庭流媒体前几天被关闭了。这样你就可以在另一台电脑上玩一台电脑上正在渲染的游戏(通常是在电视/媒体中心上玩游戏,而另一间房间里的一台嘈杂的大桌面上正在渲染)。除了输入之外,一切都很好。

Steam 读取客户端的输入并将其发送到远程 Steam 实例。这相当简单,但为了读取原始输入并将其注入到另一端,Steam 的两个实例需要读/写权限/dev/uninput

为了支持 Linux 主机上的流游戏控制器,/dev/uinput 或 /dev/input/uinput 需要可被 Steam 读取和写入。

这让我有点为难。我应该:

  • sudo chmod o+rw /dev/uninput允许任何东西读/写它?
  • sudo setfacl -m u:$USER:rw /dev/input仅允许我的用户读/写?
  • 还有什么我不知道的事情吗?

甚至 ACL 似乎也是一种不必要的安全风险(例如,我用户下的任何进程都可以)嗅探密码输入。有没有办法只允许一个应用程序(如内核“功能”/FSCAP)与 uinput 交互?

答案1

已过时,请阅读更新在本回复底部

你说得对。这就是它被列为已知问题的原因。我想他们迟早会找到办法的。

这并不安全,但它可以工作(直到有适当的修复)。创建一个文件/etc/udev/rules.d/99-steam-controller.rules内容如下:

# replace game group by a valid group on your system
# Steam controller keyboard/mouse mode
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", GROUP="games", MODE="0660"

# Steam controller gamepad mode
KERNEL=="uinput", MODE="0660", GROUP="games", OPTIONS+="static_node=uinput"

然后将你用来启动 steam 的用户添加到“游戏”组

sudo usermod -a -G games <YourUsername>
#Restart udev service
sudo udevadm control --reload

来源: https://github.com/ynsta/steamcontroller


更新

这已添加到已知问题列表中。确保您使用的是来自官方网站的 udev 规则: https://steamcommunity.com/app/353370/discussions/0/490123197956024380/

那里有关于如何解决您的问题的说明,并且当 Valve 添加对新控制器的支持时,规则会不时更新。

相关内容