在没有`sudo“的情况下访问GPIO(一个覆盆子pi)

当然,这个问题可能不是特定的覆盆子pi。 另外,我对Linux比较陌生。

我想写一个小的库(在node.js中,如果有的话)使用sysfs访问树莓派的GPIO。 但是,访问sysfs需要sudo访问权限,这显然是不好的。

Quick2Wire似乎有一个解决scheme,但我想更好地理解它,而不是只是盲目地使用它。 他们当然使用了C语言,但是据我所知,代码并不复杂,并且可能只是用bash来拉取,即使不那么优雅。 然而,更重要的是,我不知道为什么它的作品。

任何帮助将是伟大的。

编辑:感谢您的意见。 很显然,我需要重述这个问题。 这里是:它是如何安装(作为根),应用程序不需要任何更多的根perms使用? 在这种情况下,如何为某人添加帮助? /sys/devices/virtual/gpio不是gpio sysfs可用的位置,那么有什么诀窍呢? 我真的是一个n00b,所以这些问题可能不是问题,所以请耐心等待。

拉克什,我刚刚试图找出完全一样的东西,我想我已经解决了。

你根本不需要了解许多makefile。 重要的代码如下,当你运行sudo make install时候在bash中执行

 install: install-files groupadd -f --system gpio chgrp gpio $(DESTDIR)/bin/gpio-admin chmod u=rwxs,g=rx,o= $(DESTDIR)/bin/gpio-admin 

groupadd -f --system gpio创建一个名为gpio的系统组。 chgrp gpio $(DESTDIR)/bin/gpio-admin将二进制文件(将C文件gpio-admin.c编译为)的组更改为gpio。 chmod u=rwxs,g=rx,o= $(DESTDIR)/bin/gpio-admin做两件重要的事情。 首先,它让gpio组的成员运行gpio-admin。 其次,它在gpio-admin上设置setuid位。

当你自己添加到gpio组,你可以运行gpio-admin,而不使用sudo,但是gpio admin会像在sudo下运行一样。 这允许它写入/ sys / class / gpio / export文件。 它也允许它更改所创建的文件/ sys / class / gpio / gpio [pin号码] /方向等的所有者。

即使将/ sys / class / gpio / export组更改为gpio,并设置了允许写入的权限

 sudo chgrp gpio /sys/class/gpio/export /sys/class/gpio/unexport sudo chmod g+rwx /sys/class/gpio/export /sys/class/gpio/unexport 

你可以导出一个引脚没有超级用户的权力

 echo 22 > /sys/class/gpio/export 

但是文件/ sys / class / gpio / gpio22 /方向等仍然会以root身份作为所有者和组创建,您将需要使用sudo来更改它们。 此外,每次重新引导后,导出和未导出文件的所有权将恢复为根。