如何永久修复/ dev / vchiq权限错误?


21

我正在编写使用Pi的GPU的图形应用程序,并且* failed to open vchiq instance在运行程序时不断出错。此问题通常由修复sudo chmod 777 /dev/vchiq,但(1)这是一个非常不安全的修复程序,绝对不适合部署到用户拥有的设备上;(2)每次重新启动后都会重置。

如何/dev/vchiq在不引入安全性问题的情况下,以“正确的方式”持续解决问题?

Answers:


28

通过将自己添加到video组中,我能够解决类似的问题(我没有使用默认用户)。也许可以帮上忙。

该命令是:

sudo usermod -a -G video $(whoami)

您需要注销然后再次登录才能使更改生效。


2
这对我有用(sudo usermod -a -G video $(whoami)),我也建议(出于安全目的)为需要访问摄像机的任何过程添加一个专用用户,并将该用户仅添加到video组中。
n8henrie '16

3
重新启动后,此永久解决方案可以正常工作并且相对安全。
Serge Stroobandt

需要重新启动....
穆萨俾路支省

2
这也对我有用!谢谢。无需重新启动,注销并再次登录就足够了。
tuvokki

1
这是正确,安全的方法。如果您有专用于此功能的用户,则可以通过用该用户名替换$(whoami)来添加它们。
IceMage

8

您可以创建udev规则来设置设备上的特定权限。作为root,您可以:

回声'SUBSYSTEM ==“ vchiq”,GROUP =“ video”,MODE =“ 0660”'> /etc/udev/rules.d/10-vchiq-permissions.rules
usermod -a -G视频YourUnprivilegedUser

这不能解决问题。运行之后,我仍然会收到错误消息。
塞林2015年

我怀疑权限是在较高的udev规则(因此在运行顺序中稍后)中完成的,该规则撤消了此更改。在我的(Debian)PC上,系统提供了文件,/lib/udev/rules.d/91-permissions.rules因此,我尝试将其写入更高的文件(并且可能在名称中包括local,以将其标识为本地修改),即:echo `SUBSYSTEM=="vchiq",GROUP="video",MODE="0660"\' > /etc/udev/rules.d/92-local-vchiq-permissions.rules
SlySven,2016年

我的权限被拒绝,这可能是什么问题?
dmigo

非常适合我。如果usermod不够的话,这是一个优雅的解决方案
Axel Advento

5

您可以设置SUID权限

sudo chmod u+s /dev/vchiq

这是做什么的?
Fouric 2014年

1
为可执行文件提供setuid属性后,系统上有权执行此文件的普通用户将获得拥有该文件的用户(通常为root)的特权。您可以在程序上设置它(假设它是由root拥有的)。由于/dev/vchiq属于组,video另一个选项是将setgid程序上的组设置为video
Milliways

1
尽管用户www-datavideo组中,但这没有帮助,但是我chmod a+rw /dev/vchiq在Raspbian Stretch上成功实现了。
JanTuroň2015年

0

start_x=1 
gpu_mem=256

boot/config.txt再运行sudo raspistill -o cam.jpg

当然,我为raspistill添加了路径。它在Ubuntu中为我工作。


我看不到这如何回答OP的问题-您能否扩大答案以解释它在Raspberry Pi上的工作原理?
SlySven '16

0

如果您正在通过浏览器访问的php脚本运行raspistill,则需要输入:sudo usermod -a -G video www-data 授予Apache必要的权限。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.