【发布时间】:2019-02-18 10:48:06
【问题描述】:
我正在尝试让我的用户 bob 更改屏幕亮度的权限,这意味着:让 bob 读取、写入 /sys/class/backlight/intel_backlight/brightness 的权限
使用:
udevadm info -a -p /sys/class/backlight/intel_backlight/
显示以下结果:
looking at device '/devices/pci0000:00/0000:00:02.0/drm/card1/card1-eDP-1/intel_backlight':
KERNEL=="intel_backlight"
SUBSYSTEM=="backlight"
DRIVER==""
ATTR{actual_brightness}=="7500"
ATTR{bl_power}=="0"
ATTR{brightness}=="7500"
ATTR{max_brightness}=="7500"
ATTR{type}=="raw"
.
.
.
所以我在 /etc/udev/rules.d/30-brightness.rules
中为此编写了一个 udev 规则30-brightness.rules
KERNEL=="intel_backlight", SUBSYSTEM=="backlight", RUN+="/usr/bin/find /sys/class/backlight/intel_backlight/ -type f -name brightness -exec chown bob:bob {} \; -exec chmod 666 {} \;"
但重启后文件权限保持不变-rw-r--r-- 1 root root
所以我的问题是如何使用 udev 规则更改特定文件权限,我做错了什么?
【问题讨论】:
-
需要考虑的几件事:以后有没有覆盖它的规则?您为
find使用了完整路径,但没有为chown或chmod使用完整路径,它们在路径上吗?这些实际上是文件(-type f)吗,/sys/class下的大多数东西都是我系统上的符号链接或目录。 -
我已尝试将文件名更改为 90-brightness.rules,以便它最后运行。
/etc/udev/rules.d中存在的唯一其他规则是70-snap.core.rules,因此它不应该覆盖我的规则。如果我在命令行中运行/usr/bin/find /sys/class/backlight/intel_backlight/ -type f -name brightness -exec /bin/chown bob:bob {} \; -exec /bin/chmod 666 {} \;,它可以正常工作,但如果我在我的开发规则中运行它,它仍然无法正常工作。
标签: linux file-permissions udev screen-brightness