Rak*_*Pai 20 linux sudo gpio raspberry-pi
当然,这个问题可能并不特定于树莓派.另外,我对Linux比较陌生.
我想写一个小库(在node.js中,如果这很重要)来使用sysfs访问raspberry pi的GPIO.但是,访问sysfs需要sudo访问权限,这显然是有原因的.
Quick2Wire似乎有一个解决方案,但我想更好地理解它,而不是盲目地使用它.他们当然使用了C语言,但从我的理解来看,代码并不复杂,而且可能只用bash就可以完成,即使不那么优雅.但是,最重要的是,我不确定它为什么会起作用.
任何帮助都会很棒.
编辑:感谢您的评论.很明显,我需要重新解释这个问题.这里说:一旦安装(作为root),应用程序不再需要使用根权限吗?在这种情况下,如何将某人添加到群组中?/sys/devices/virtual/gpio
不是gpio sysfs可用的位置,那有什么诀窍呢?我真的是一个n00b,所以这些问题可能是n00b-ish,所以请耐心等待.
Har*_*ner 20
Rakesh,我刚刚试图找出完全相同的东西,我想我已经解决了它.
你根本不需要了解很多makefile.重要的行如下,在运行时以bash执行sudo make install
install: install-files
groupadd -f --system gpio
chgrp gpio $(DESTDIR)/bin/gpio-admin
chmod u=rwxs,g=rx,o= $(DESTDIR)/bin/gpio-admin
Run Code Online (Sandbox Code Playgroud)
groupadd -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-admin上设置setuid位.
当你自己添加到gpio组时,你可以运行gpio-admin,而不使用sudo,但是gpio admin会像在sudo下运行一样.这允许它写入/ sys/class/gpio/export文件.它还允许它更改创建的文件/ sys/class/gpio/gpio [引脚号] /方向等的所有者.
即使您将/ 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
Run Code Online (Sandbox Code Playgroud)
您可以导出没有超级用户权限的引脚
echo 22 > /sys/class/gpio/export
Run Code Online (Sandbox Code Playgroud)
但仍然会创建文件/ sys/class/gpio/gpio22/direction等作为所有者和组的root,并且您需要使用sudo来更改它们.此外,导出和取消导出文件的所有权将在每次重新启动后恢复为root.
归档时间: |
|
查看次数: |
21997 次 |
最近记录: |