您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在没有``sudo''的情况下访问(树莓派的)GPIO

在没有``sudo''的情况下访问(树莓派的)GPIO

Rakesh,我一直在尝试找出完全相同的问题,并且我想已经解决了。

您根本不需要了解很多makefile。重要的几行如下,在您运行时以bash执行sudo make install@H_301_4@

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

groupadd -f --system gpio@H_301_4@创建一个名为gpio的系统组。chgrp gpio $(DESTDIR)/bin/gpio- admin@H_301_4@将二进制文件(将C文件gpio- admin.c编译到)的组更改为gpio。二进制文件的所有者仍然是root用户(因为您以root用户身份运行make。)chmod u=rwxs,g=rx,o= $(DESTDIR)/bin/gpio-admin@H_301_4@做了两件重要的事情。首先,它使gpio组的成员运行gpio- admin。其次,它在gpio-admin上设置了setuid位。

当您将自己添加到gpio组时,可以运行gpio-admin,而无需使用sudo,但是gpio admin的行为就像在sudo下运行一样。这使它可以写入/ sys / class / gpio / export文件。它还允许它更改创建的文件/ sys / class / gpio / gpio [pin number] / direction等的所有者。

即使将/ 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
@H_301_4@

您可以在没有超级用户权限的情况下导出引脚

echo 22 > /sys/class/gpio/export
@H_301_4@

但是文件/ sys / class / gpio / gpio22 / direction等仍将以root作为所有者和组创建,因此您需要使用sudo进行更改。同样,每次重新启动后,导出和取消导出文件的所有权都将还原为root。

其他 2022/1/1 18:20:43 有441人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶