我刚刚安装了 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
选项:
推荐:配置
sudo
以便您可以以普通用户身份执行它。使用suid root编写脚本来执行brightnessctl。 (不要尝试直接在brightnessctl上suid root,因为假设您使用了包管理器,这将无法在下次升级中幸存)根据您编写脚本的方式,这可能会造成安全漏洞。
识别有问题的设备文件,编写 udev 规则以在创建后设置权限。编写或调试并不有趣。
我还希望能够在没有 root 权限的情况下使用 amixer 设置音量
我可以amixer
在没有 root 权限的情况下正常使用,因此,对于这种情况,我要么怀疑您的发行版/您的机器上存在一些奇怪的设置。或者,如果您的发行版与我的类似,您没有将您的使用设置为有权执行音频操作的组的成员(audio
在我的发行版上,只需编辑/etc/group
,或使用您的发行版提供的任何工具即可)。
答案3
您必须将自己添加到video
和input
组中,然后brightnessctl
应该可以正常工作。看https://github.com/Hummer12007/brightnessctl/issues/63。