kernel-module - 为什么这个 udev 规则没有在启动时应用,而是使用 udevadm test /sys/module/printk 应用?
问题描述
上下文
我需要禁用串行控制台作为唤醒源,以便在通过 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 文件)?
解决方案
推荐阅读
- powershell - 如何从PowerShell中的GET-TIMEZONE函数响应中读取时区ID
- firebase - 我应该使用 Cloud Functions 制作 RESTful API 还是在应用程序中调用 Firebase 和 Firestore?
- python - Python中使用OLS的线性多元回归不起作用
- java - 构建 Geonetwork 时 Maven 构建失败
- java - Netbeans 12.0 Java 提示和亮点不起作用
- linux - 更改 struct spi_device 后“不同意符号的版本”
- c++ - 预期不是标准库的一部分
- android - 如何为 BottomNavigationView + Navigation 组件添加条件?
- asp.net - 如何向 ascx 文件中的某些 asp tablerow 元素添加 'wrap' 元素,以便我可以使用我的 vb 代码文件隐藏/显示它们?
- mysql - MySQL shell 无法连接到 MySQL docker 容器