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

Linux kernel 为什么要为内核模块开发中声明的每个变量指定permisson属性?,linux-kernel,kernel,kernel-module,Linux Kernel,Kernel,Kernel Module,尽管我们在全局名称空间中定义了这些变量,但为什么我们需要显式地为每个声明的变量指定权限呢。还是我的思维方式完全错了 int number=100; 模块参数(数字,整数,0);//模块参数(变量名称、变量类型、权限) 权限属性中的“0”实际上是什么意思?此权限标志值控制谁可以访问sysfs中模块参数的表示形式。如果perm设置为0,则根本没有sysfs条目;否则,它将显示在具有给定权限集的/sys/module下 使用S_IRUGO获取世界可以读取但无法更改的参数 S|u IRUGO | S|u

尽管我们在全局名称空间中定义了这些变量,但为什么我们需要显式地为每个声明的变量指定权限呢。还是我的思维方式完全错了

int number=100;
模块参数(数字,整数,0);//模块参数(变量名称、变量类型、权限)


权限属性中的“0”实际上是什么意思?

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

使用S_IRUGO获取世界可以读取但无法更改的参数

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

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

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