【问题标题】:How can I setup permission of Linux char driver?如何设置 Linux char 驱动程序的权限?
【发布时间】:2013-09-21 14:59:47
【问题描述】:

各位, 我为我的 i2c 设备编写了一个字符驱动程序。它正在使用 Linux 内核 3.0.8 在 Android 4.0.3 上运行。

当我尝试使用 ioctl() 和我的原生 Android 应用程序访问驱动程序时。我收到权限被拒绝错误。

如果我使用以下命令创建设备文件,我不会收到权限错误。

mknod /dev/barcodescan c 100 0

我不想一直手动发出这个命令,而是让模块在启动时执行它。我编写了以下代码,但出现权限被拒绝错误。 如何在此代码中设置权限?

ret= register_chrdev(MAJOR_NUMBER,"barcode",&fops );

if(ret) {   
   pr_info(KERN_ERR "%s:register chrdev failed\n",__FILE__);    
   return ret;
}

i2c_dev_class = class_create(THIS_MODULE,"barcode");

if (IS_ERR(i2c_dev_class)) {        
   ret = PTR_ERR(i2c_dev_class);        
   class_destroy(i2c_dev_class);    
}

【问题讨论】:

    标签: linux char kernel driver device


    【解决方案1】:

    我假设您正在构建自己的 Android 映像。

    在这种情况下,您需要编辑init.rc 以添加这样的行,以确保您的设备节点在启动时自动创建:

    mknod /dev/barcodescan c 100 0
    chown system system /dev/barcodescan
    

    您可能希望将 system:system 更改为其他帐户和/或使用 chmod 添加更多权限,例如使用 chmod 666,但不建议这样做。

    【讨论】:

      猜你喜欢
      • 2020-09-06
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      相关资源
      最近更新 更多