我一直在尝试通过 Linux 将 steam 安装到我的 Lenovo chromebook,但每次我按照代码操作时,我总是会遇到此错误。我不知道如何授予许可,我只是想看看是否有人可以帮助指导我在这种情况下该怎么做。
我使用了命令:
sudo dpkg -i steam.deb
准备设置蒸汽后,它说:
Failed to write 'change' to '/sys/devices/virtual/misc/uinput/uevent': Permission denied
更新:我找到了解决这个问题的方法并且可以继续。
答案1
从您正在使用的事实来看dpkg
,我假设您正在使用 Debian 或从其派生的其他发行版。
虚拟文件/sys/devices/virtual/misc/uinput/uevent
是在加载uinput
内核模块时创建的。由于它sysfs
是根据内核当前运行时状态动态创建的虚拟文件系统的一部分,因此对其权限所做的任何更改都不会在重新启动后保留。
Steam 需要访问此文件可能与硬件支持有关:访问uinput
内核模块的服务可能会简化对某些高级游戏控制器功能和/或各种 SteamVR 兼容虚拟现实设备的支持。
如果您没有这些硬件设备,您可能可以忽略此错误消息:它不应阻止 Steam 安装。
当您在本地登录时,系统会自动向您的用户帐户添加一些组成员身份:这些组成员身份将授予您远程用户通常无法获得的额外硬件访问权限。例如,本地登录的用户通常会获得plugdev
组成员身份,以允许他们轻松使用大多数 USB 设备。该组可能也适合 Steam 的用例。因此,您可能希望/sys/devices/virtual/misc/uinput/uevent
对plugdev
每次uinput
加载模块时自动添加的组具有组写访问权限。
(该组的这种使用plugdev
可能特定于 Debian 及其衍生版本:如果您使用其他发行版,您可能需要弄清楚它如何处理本地登录用户的硬件访问权限,并调整过程以匹配。)
您可以使用这样的命令来完成此操作(全部在一行中):
echo "install uinput /sbin/modprobe -i uinput; /bin/chgrp plugdev /sys/devices/virtual/misc/uinput/uevent; /bin/chmod g+w /sys/devices/virtual/misc/uinput/uevent" | sudo tee /etc/modprobe.d/uinput.conf
此命令创建一个名为 的文件/etc/modprobe.d/uinput.conf
,并向其中写入一行uinput
内核模块的自定义安装指令。它不仅仅是加载模块,第一的像往常一样加载模块,然后运行chgrp
和chmod
命令来调整文件的权限/sys/devices/virtual/misc/uinput/uevent
。
之后,您应该卸载uinput
内核模块并重新加载它,以验证配置是否按预期工作:
sudo modprobe -r uinput
sudo modprobe uinput
现在,ls -l /sys/devices/virtual/misc/uinput/uevent
应该显示如下结果:
-rw-rw-r-- 1 root plugdev 4096 May 6 02:08 /sys/devices/virtual/misc/uinput/uevent
表明属于该plugdev
组的任何用户(即本地登录的任何用户)现在都可以读取和写入该文件。