当然,这个问题可能不是针对覆盆子圆周率的。而且,我对Linux还比较陌生。
我想编写一个小库(如果这很重要的话,用node.js )来使用sysfs访问raspberry pi的GPIO。但是,访问sysfs需要sudo访问,这显然是不好的。
Quick2Wire似乎有一个解决方案,但我想更好地理解它,而不是一味地使用它。当然,他们使用了C,但据我所知,代码并不复杂,很可能只需要bash就可以完成,即使不那么优雅。然而,最重要的是,我不知道为什么会工作。
任何帮助都会很好。
编辑:谢谢你的评论。很明显我需要重新表述这个问题。下面是这样的:应用程序一旦安装(作为root),如何不需要更多的根权限来使用呢?在这种情况下,向组中添加某个人是如何帮助的?/sys/devices/virtual/gpio不是gpio可用的位置,那么这其中的诡计是什么?我真的是一个n00b,所以这些问题可能是不可能的,所以请容忍我。
发布于 2012-09-13 17:02:53
拉凯什,我只是想弄清楚同样的事情,我想我已经解决了。
您根本不需要了解多少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-admingroupadd -f --system gpio创建一个名为gpio的系统组。chgrp gpio $(DESTDIR)/bin/gpio-admin将C文件gpio-admin.c编译到的二进制文件组更改为gpio。二进制文件的所有者仍然是root (因为您正在以root的形式运行make。) chmod u=rwxs,g=rx,o= $(DESTDIR)/bin/gpio-admin做了两件重要的事情。首先,它允许gpio组的一个成员运行gpio-admin.其次,它在gpio上设置setuid位.
当您将自己添加到gpio组中时,您可以不使用sudo运行gpio- admin,但是gpio管理将表现为在sudo下运行。这允许它写入/sys/class/gpio/导出文件。它还允许它更改创建的文件/sys/class/gpio/gpiopin编号/方向等的所有者。
即使您将/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/gpio 22/direction等仍将以root作为所有者和组创建,您需要使用sudo来更改它们。此外,导出和取消导出文件的所有权将在每次重新启动后恢复为root。
https://stackoverflow.com/questions/12133860
复制相似问题