繁体   English   中英

允许非root用户ioctl访问linux模块中的/ dev / mytest文件

[英]Allow non-root users ioctl access to /dev/mytest file in linux module

我的项目包含两件事:内核模块和应用程序,它们使用/dev/mytest文件通过ioctl进行通信。

当前,需要以root用户身份运行app才能访问/dev/mytest文件。 是否可以允许非用户使用此文件进行迭代而无需sudo?

据我了解,file_operations结构属性.owner = THIS_MODULE/dev/mytest文件无关,并且仅与驱动程序文件关联。

我在内核模块中使用class_createdevice_create函数创建/dev/mytest 因此,也许我应该指定一些特殊的device_create参数? 或者我怎么能做到呢?

在现代内核中,您可以执行以下操作

  myclass = class_create(THIS_MODULE, "my_class_name");
  /* error handling if class_create fails */
  myclass->devnode = mydevnode;

你的devnode函数就像

  static char *mydevnode(struct device *dev, umode_t *mode)
  {
      if (mode)
          *mode = 0666; /* or whatever permissions you want */
      return NULL; /* could override /dev name here too */
  }

然后,如果您使用device_create创建驱动程序专用文件,则内核将调用mydevnode创建文件,并且您可以在此处覆盖文件权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM