解决 驱动创建设备节点时 权限为 root只读只写 的问题
来源:互联网 发布:单片机lcd液晶显示 编辑:程序博客网 时间:2024/05/20 13:40
上一篇做字符设备驱动时,创建的设备节点/dev/mycdev 为root用户root组,且权限为0600,这就导致一般的应用程序无法访问上网查询得知可通过udev自创规则来实现:创建设备节点时设置权限。
详情参考:http://blog.chinaunix.net/uid-23670869-id-2391638.html。
zhou@zhoupc:~$ cd /etc/udev/rules.d/
zhou@zhoupc:/etc/udev/rules.d$ ls
99-vmware-scsi-udev.rules README
里面是一些以两位数字开头,以rules为后缀的规则文件,数字小的规则文件先执行。必须以sudo创建规则文件。
zhou@zhoupc:/etc/udev/rules.d$ sudo vim 99-my-udev.rules
里面写入
KERNEL=="mycdev",MODE="0666"
其中 == 号表示匹配,= 号表示赋值。KERNEL表示内核中看到的设备名称,也就是你在驱动里面设置的DEV_NAME。MODE表示要设置的权限。结合起来整句话就是,如果发现一个新的设备叫做“mycdev”的话,就把它的节点权限设置为“0666”。这样其他程序就能以普通权限来访问了。
KERNEL匹配的字符串可以是 sd* 这种类型的,代表匹配sd开头的设备。
配置前:
zhou@zhoupc:/etc/udev/rules.d$ ls
! 99-my-udev.rules.old 99-vmware-scsi-udev.rules README
改后缀名后就不生效了。
zhou@zhoupc:~/lnxdrv$ sudo insmod mycdev.ko
zhou@zhoupc:~/lnxdrv$ ll /dev/mycdev
crw------- 1 root root 250, 0 9月 10 21:19 /dev/mycdev
可以看到只有root用户可以RW
zhou@zhoupc:~/lnxdrv$ ./mycdevtst
open error: Permission denied
这时普通程序尝试open /dev/mycdev时产生权限错误
zhou@zhoupc:/etc/udev/rules.d$ ls
! 99-my-udev.rules 99-vmware-scsi-udev.rules README
加入规则
zhou@zhoupc:~/lnxdrv$ sudo insmod mycdev.ko
zhou@zhoupc:~/lnxdrv$ ll /dev/mycdev
crw-rw-rw- 1 root root 250, 0 9月 10 21:24 /dev/mycdev
可以看到权限已经变为其他用户RW
zhou@zhoupc:~/lnxdrv$ ./mycdevtst
old data is 0
new data is 1
ioctl : new data is 90
普通权限也可以访问了
但是我还是觉得有缺点,毕竟还得手动添加规则,可能还不如直接在驱动里面更改权限来得快。
下一篇想用一个暴力点的办法解决,在网上实在找不到好点的解决办法
- 解决 驱动创建设备节点时 权限为 root只读只写 的问题
- 设备节点创建以及驱动改权限
- C#关于类的只读只写属性的问题
- 设备节点权限问题
- 设备节点权限问题
- C#控制台 只读,只写,读写,读写时过滤的属性
- linux字符设备驱动之设备节点的自动创建
- 设备驱动-----自动创建节点
- 设备驱动--自动创建节点
- 创建设备节点问题
- 解决IIS"数据库或对象为只读"的问题
- SQL Server 2008 解决附加数据库为只读的问题
- android 字符设备驱动模块及在 /dev 下自动创建设备节点问题
- android 字符设备驱动模块及在 /dev 下自动创建设备节点问题
- [Python] Python与Excel--只读|只写|读写|创建图表
- LED驱动,自动创建设备节点
- 驱动初始化中自动创建设备节点
- 设备驱动-----debugfs创建节点并读写
- 防查壳、防杀软误报——手动修改加UPX壳的应用程序
- Reflect
- Android开发笔记——序列化和解析XML文件
- 相似图片搜索的原理(二)
- C++实现顺序表
- 解决 驱动创建设备节点时 权限为 root只读只写 的问题
- Minimum Path Sum
- C++Primer第五版 1.4.4节练习
- Java_jdbc 基础笔记之十三 数据库连接(DAO)
- 汇编语言基础学习
- 轻量级.Net开源日志组件--AHCT.Log.NLogger
- java中对象的理解
- Pixel binning
- Tomcat搭建资源服务器