如何在/ sys /永久中设置权限?


12

我以用户身份启动X,需要在中设置键盘亮度/sys/class/leds/asus\:\:kbd_backlight/brightness。该/sys/目录被重新启动后重新建立,因此权限将重置了。如何设置它,这样每次启动后都不需要所有用户都可写该文件?

我正在将Archlinux和SDDM用作登录管理器,将KDE用作DE。


2
您可以在systemd引导服务中放置命令。
goldilocks 2013年

您是要创建设置权限的自己的systemd服务吗?还是您从特定文件讲话?
2013年

前者。“服务”是系统术语,即使在这种情况下,它只是一次性命令,而不是守护程序。您可以使其成为rc.local之类的“杂项”服务,例如sysV。在这种情况下,该服务仅运行一个Shell脚本,然后将命令放入其中。
goldilocks 2013年

Answers:


13

不,您不能,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"


我尝试过,但是总是要求输入密码。我还尝试在(ALL)后面添加一个NOPASSWD:。
2013年

@Timo您可以再试一次吗?查看我的更新
雏菊

现在可以使用了。问题是我的条目被另一个没有NOPASSWD的条目覆盖。我接受了您的答案,因为它比其他答案更容易。谢谢大家
2013年

我在sony vaio中使用linux Mint Debian,并尝试在其中创建文件/sys/devices/platform/sony-laptop/kbd_backlight以控制键盘背光。我已经更改了代码中导致此错误的路径:(bash: syntax error near unexpected token '`我键入的命令是ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/devices/platform/sony-laptop/kbd_backlightPlease help
Indra

直到在/usr/bin/tee和之间添加逗号,我才能在Ubuntu机器上使用此工具/sys/class...。简要看一下语法后,man sudoers我怀疑逗号是必需的。
Sage Mitchell

4

/sysLinux中的目录是伪造的,它是装扮成文件的内核视图。因此,要永久更改其中的权限就意味着要对内核进行破解,这是不明智的做法。正如评论所言,也许systemd将其设置为一个单位将是一个解决方案(通常,将更改设置为引导过程的一部分)。


4

我有一个类似的问题,我需要在运行nodered服务之前设置权限。按照goldilocks的评论,我创建了这个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

写入服务文件后,我使用

$ sudo systemctl enable setledspermissions.service
$ sudo systemctl start setledspermissions.service
$ sudo systemctl status setledspermissions.service

当需要授予对特定/ sys /路径的写访问权限时,这通常是走的路吗?我的用例是在我的笔记本电脑上设置屏幕背光亮度。
Richrd

我猜是因为每次引导都会重新创建sys路径。但是我不够专业,无法确定这一点。
hariseldon78 '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.