为什么这个udev规则没有在启动时应用,而是使用udevadm test / sys / module / printk来应用?

时间:2018-08-22 05:48:19

标签: kernel-module udev sysfs

上下文
我需要禁用串行控制台作为唤醒源,以便在PC上通过串行按键连接时不会将设备从待机/休眠状态唤醒。我发现可以将/ sys / module / printk / parameters / console_suspend属性文件的值设置为'N'来实现。我有一个设置此值的API函数,但该函数是由非root用户调用的。这里的问题是/ sys / module / printk / parameters / console_suspend由root拥有,因此调用API函数时会引发权限被拒绝错误。我发现可以将udev规则设置为更改文件组,以便非root用户可以修改属性文件。

我尝试过的事情
我试图在/etc/udev/rules.d/extra.rules

中添加以下规则
SUBSYSTEM=="module", DEVPATH=="/module/printk", PROGRAM="/bin/sh -c 'chown root:groupA /sys/module/printk/parameters/console_suspend'"

后跟命令以重新加载规则

udevadm control --reload-rules

但是在系统启动或尝试时

udevadm trigger

此规则不适用。但是在运行测试时会应用

udevadm test /sys/module/printk

试图通过

调试 udevadm触发器调用
udevadm monitor 

但没有任何与/ sys / module / printk相关的输出

问题
1.甚至可以使用udev更改此文件的所有权吗?
2.除了udev以外,还有其他更改所有权的选项吗?
3.是否有其他选项可以禁用串行控制台作为唤醒源(例如某些/sys/.../wakeup文件)?

0 个答案:

没有答案