高中生
最后登录1970-1-1
在线时间 小时
注册时间2020-6-2
|
在使用鲁班猫的过程中,发现cat用户并没有配置好外设的使用权限。最简单的办法就是sudo改权限,让cat用户能临时访问设备(重启后会失效)。有没有什么办法能一劳永逸的呢?
当然有 ,就是通过udev规则实现设备权限的自动绑定。
什么是udev,简单来说,只要Linux内核启动了,udev就以守护进程的方式运行 ,并侦听内核发出的uevent来管理设备。所以不管是系统启动时初始化的设备,还是启动后插入的新设备(例如USB等热插拔设备),都逃不过udev的管理。
而使用udev规则来指定设备的访问权限,则是真正的一劳永逸的处理方式。
在命令行执行以下命令
- sudo vi /etc/udev/rules.d/99-rockchip-permissions.rules
复制代码 然后在文件尾部的 LABEL="permissions_end" 字段前添加以下内容
- # SPI、I2C、gpio devices
- SUBSYSTEM=="spidev", GROUP="devuser", MODE="0660"
- SUBSYSTEM=="i2c-dev", GROUP="devuser", MODE="0660"
- # gpio部分未能生效,具体原因还在了解
- SUBSYSTEM=="gpio*", PROGRAM="/bin/sh -c '\
- chown -R root:devuser /sys/class/gpio && chmod -R 770 /sys/class/gpio;'"
复制代码 这个配置规则,是告诉udev,只要是子系统硬件匹配spidev和i2c-dev的,就把该设备的用户组调整成devuser,权限改成0660
接下来我们需要新建devuser组,并把cat用户添加到这个组里。输入以下命令
- sudo groupadd devuser
- sudo adduser "$USER" devuser
复制代码
然后重启设备
重启完毕后,我们在命令行查看/dev/spidev*设备的权限,并使用spi测试程序测试一下,能正常读写。
希望社区这边能把这个设置改到正式的镜像里,让普通用户能直接访问设备,减少开发者的困扰。
最后再说一下,滥用sudo是一种陋习,学习正经的Linux权限配置和解决方案才是王道。
|
|