我使用的是 Raspbian(为 Raspberry Pi 制作的发行版,基于 Debian)。
我有一些使用 i 2 c的脚本。
通常只有 root 对 i 2 c具有读写权限。
我使用此命令为普通用户添加 i2c r/w 权限:
# chmod a+rw /dev/i2c-*
但是,重新启动后,这些设备将具有默认权限。
是什么最好的办法让我的 i2c 可供普通用户永久读写?
有没有比将我的脚本添加到 init.d 来在我的 Raspberry Pi 启动后运行上面的命令更“优雅”的方法?
答案1
您可以使用以下方法执行此操作乌德夫。创建一个/etc/udev/rules.d
后缀为 的文件.rules
,例如local.rules
,并向其中添加如下行:
ACTION=="add", KERNEL=="i2c-[0-1]*", MODE="0666"
MODE=0666
rw 代表所有者、组、世界。您可以替代或同时执行的操作是为节点指定 GID,例如:
GROUP="pi"
如果您使用此值而不是该MODE
设置,则将应用默认值 0660(所有者和组的 rw),但组将为pi
,因此用户pi
将具有 rw 权限。也可以用OWNER
同样的方式指定。
注意==
和=
上面的区别。前者是为了测试某件事是否正确,后者是为了设定它。不要忘记=
in来混淆它们==
。
您必须重新启动才能生效。
答案2
有些设备组的组所有者不是 root。其中包括磁盘、输入、声音、tty 和串行设备。对于这些,您可以通过将用户添加到组来提供对整个设备组的访问权限。
/dev/ttyUSB0
例如,为用户提供访问权限pi
。你的ls -l
设备并得到,
crw-rw---- 1 root dialout 4, 64 Jan 19 01:36 /dev/ttyUSB0
由于该组是dialout
,因此您将其添加pi
到该dialout
组中/etc/group
,
dialout:x:20:pi
然后,用户pi
可以注销并重新登录以激活新的组成员身份。