我刚刚安装了brightnessctl 来控制我的屏幕亮度,但只能以root 身份运行它。否则会打印我“获得设备文件的写权限”的建议。这样做的正确方法是什么?我还希望能够在没有 root 权限的情况下使用 amixer 设置音量,我认为这是同一个问题。
我刚刚安装了brightnessctl 来控制我的屏幕亮度,但只能以root 身份运行它。否则会打印我“获得设备文件的写权限”的建议。这样做的正确方法是什么?我还希望能够在没有 root 权限的情况下使用 amixer 设置音量,我认为这是同一个问题。
选项:
推荐:配置
sudo
以便您可以作为普通用户执行它。用suid root写一个脚本来执行brightnessctl。(不要尝试直接在brightnessctl 上suid root,因为假设您使用了包管理器,这将无法在下一次升级中继续存在)根据您编写脚本的方式,这可能会打开一个安全漏洞。
识别有问题的设备文件,创建后编写udev规则设置权限。编写或调试不好玩。
我可以
amixer
在没有 root 权限的情况下使用,所以为此,我怀疑你的发行版/你的机器上有一些奇怪的设置。或者,如果您的发行版与我的发行版类似,您还没有使您成为有权执行音频操作的组的成员(audio
在我的发行版上,只需编辑/etc/group
,或使用您的发行版为此提供的任何工具)。许多设备访问问题可以通过更改组成员身份来解决。
您可以在连接设备时通过观看来找到设备名称
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
访问权限。就是这样:
这允许您成为可以
rw
使用该设备的组的成员,但还有一个步骤。要使您的所有进程成为新组的成员,请注销并登录。组成员资格是
login
按时设置的。在新组中创建单个进程(用于测试,在注销/登录之前):
或者,只需键入组名。见
man newgrp
。