为什么要为内核模块开发中声明的每个变量指定权限属性?

时间:2014-12-15 08:55:34

标签: linux-kernel kernel kernel-module

虽然我们在全局命名空间中定义了这些变量,但为什么我们需要为声明的每个变量显式指定权限。或者我的思维方式完全错了?

int number = 100; module_param(number, int , 0); // module_param(variable_name, variable_type , permissions);

' 0'在权限属性中实际意味着什么?

1 个答案:

答案 0 :(得分:6)

此权限标记值控制谁可以访问sysfs中模块参数的表示形式。如果perm设置为0,则根本没有sysfs条目;否则,它出现在具有给定权限集的 / sys / module 下。

使用 S_IRUGO 作为可由世界读取但无法更改的参数;

S_IRUGO | S_IWUSR 允许root更改参数。请注意,如果参数由 sysfs 更改,则模块看到的该参数的值会更改,但不会以任何其他方式通知您的模块。您可能不应该使模块参数可写,除非您准备检测更改并做出相应的反应。

perm = 0 的唯一用途就是你可以在模块加载时设置它,就是这样。

如果要覆盖默认权限0,我需要显式指定每个变量的权限。