如何在Linux中“获得设备文件的写权限”?

如何在Linux中“获得设备文件的写权限”?

我刚刚安装了 Brightnessctl 来控制屏幕亮度,但只能以 root 身份运行。否则会打印建议“我获得设备文件的写入权限”。这样做的正确方法是什么?我还希望能够在没有 root 权限的情况下使用 amixer 设置音量,我认为这是同样的问题。

答案1

许多设备访问问题可以通过组成员身份更改来解决。

sudo journalctl --follow您可以通过在连接设备时观看来找到设备名称。或者ls -1 /dev >dev.before,连接设备,等待 10 秒ls -1 /dev >dev.after;diff dev.{before,after}

具体来说,如果ls -l 显示组权限(第二个“ rwx”三元组)为“ rw”(例如“ -rw-rw----”),则将自己添加到拥有该设备的组中将授予rw访问权限。

就是这样:

# change to your device name 
device="/dev/dvdrw"
sudo adduser $USER $(stat -c "%G" $device)

这允许您成为可以使用该设备的组的成员身份rw但还有一步。

要使所有进程成为新组的成员,请注销并登录。小组成员资格是按时间设立的login

要在新组中创建单个进程(用于测试,在注销/登录之前):

newgrp $(stat -c "%G" $device)  

或者,只需键入组名称。看man newgrp

答案2

选项:

  1. 推荐:配置sudo以便您可以以普通用户身份执行它。

  2. 使用suid root编写脚本来执行brightnessctl。 (不要尝试直接在brightnessctl上suid root,因为假设您使用了包管理器,这将无法在下次升级中幸存)根据您编写脚本的方式,这可能会造成安全漏洞。

  3. 识别有问题的设备文件,编写 udev 规则以在创建后设置权限。编写或调试并不有趣。


我还希望能够在没有 root 权限的情况下使用 amixer 设置音量

我可以amixer在没有 root 权限的情况下正常使用,因此,对于这种情况,我要么怀疑您的发行版/您的机器上存在一些奇怪的设置。或者,如果您的发行版与我的类似,您没有将您的使用设置为有权执行音频操作的组的成员(audio在我的发行版上,只需编辑/etc/group,或使用您的发行版提供的任何工具即可)。

答案3

您必须将自己添加到videoinput组中,然后brightnessctl应该可以正常工作。看https://github.com/Hummer12007/brightnessctl/issues/63

相关内容