xon*_*ned 19 filesystems users permissions
我以用户身份启动 X,需要将键盘亮度设置为/sys/class/leds/asus\:\:kbd_backlight/brightness
. 该/sys/
目录被重新启动后重新建立,因此权限将重置了。如何设置它以便我不需要在每次启动后让所有用户都可以写入文件?
我使用 Archlinux,SDDM 作为登录管理器,KDE 作为 DE。
dai*_*isy 17
不,你不能,sysfs 的权限是在内核空间中定义的,不能用用户空间工具更改(除非有内核端支持)。
但是对于您自己的问题,您可以设置一个 sudo 条目,允许每个人都写入该路径,即 ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/class/leds/asus\:\:kbd_backlight/brightness
当您写入该目录时,请使用这样的脚本, echo 1 | sudo /usr/bin/tee "/sys/class/leds/asus::kbd_backlight/brightness"
我有一个类似的问题,我需要在运行 nodered 服务之前设置权限。根据金发姑娘的评论,我创建了这个 systemd 脚本:
$ cat /etc/systemd/system/setledspermissions.service
[Unit]
Description=Set leds writable to everybody
Before=nodered.service
[Service]
Type=oneshot
User=root
ExecStart=/bin/bash -c "/bin/chmod a+w /sys/class/leds/led0/*"
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
编写服务文件后,我启用了它
$ sudo systemctl enable setledspermissions.service
$ sudo systemctl start setledspermissions.service
$ sudo systemctl status setledspermissions.service
Run Code Online (Sandbox Code Playgroud)
存档权限更改的其他方法是使用 udev 规则:
$ cat /etc/udev/rules.d/99-asus.rules
# allow keyboard brightness control for everyone
ACTION=="add", SUBSYSTEM=="leds", KERNEL=="asus::kbd_backlight", RUN+="/bin/chmod a+w /sys/class/leds/%k/brightness"
Run Code Online (Sandbox Code Playgroud)
要
udevadm test /sys/class/leds/asus::kbd_backlight
在报告中测试规则,您应该会看到指定的运行命令。
并触发它使用
sudo udevadm trigger --verbose --action=add /sys/class/leds/asus::kbd_backlight
基于这个答案