python -/dev/mem 访问在树莓派上被拒绝

标签 python cgi cgi-bin

我正在使用我的 Raspberry Pi,我正在编写一个 cgi python 脚本来创建一个网页来控制我的 gpio 输出引脚。当我尝试将 RPi.GPIO 导入为 GPIO 时,我的脚本崩溃了。这是我得到的错误:

File "./coffee.py", line 7, in <module>
    import RPi.GPIO as GPIO
RuntimeError: No access to /dev/mem.  Try running as root!

当我使用 sudo 运行我的脚本时,我的代码运行完美,但是当我从我的 apache2 服务器的 URL 运行时,它说我没有访问/dev/mem 的权限。我已经尝试编辑 visudo 但没有用。这是我的 visudo 文件的样子:

#includedir /etc/sudoers.d
pi ALL=(ALL) NOPASSWD: ALL
www-data ALL=(root) NOPASSWD: /usr/bin/python3 /usr/lib/cgi-bin/coffee.py *
apache2 ALL = (root) NOPASSWD: /usr/lib/cgi-bin/coffee.py

有什么方法可以通过 URL 调用以 root 身份运行我的脚本?谁能告诉我我做错了什么?

最佳答案

我发现将 www-data 添加到 gpio 用户组效果很好:

sudo usermod -aG gpio www-data

也可以将www-data添加到memory用户组:

sudo usermod -aG kmem www-data

如前所述,这是一个坏主意,但对我来说这是必要的。

关于python -/dev/mem 访问在树莓派上被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24746412/

相关文章:

python - 带有 Elasticsearch 后端的 Django Haystack

python - 异步 : Is it possible to cancel a future been run by an Executor?

linux - Damn Small Linux 上的 CGI Perl 脚本和 Monkey Web 服务器

haskell - 如何在 Haskell for CGI 中使用格式化打印来显示 UTF-8?

python - 如何在我的 Web 服务器上运行 Python 脚本?

perl - 当用作 cgi-bin 时,如何使用 setuid() 成功运行 Perl 脚本?

python - 查找 float 中小数点后的数字总和,直到任意精度

python - 为什么我的 Bokeh 图在 github 上不起作用?

linux - 文件路径名称存在问题,可能存在损坏的字符

python - 在 python,cgi-bin 中将图像返回给浏览器