通过Apache访问网络摄像头的权限

通过Apache访问网络摄像头的权限,apache,permissions,cgi,Apache,Permissions,Cgi,我正试图通过网络摄像头捕获图像并将其显示在网页上,但我收到了“拒绝许可错误” 我正在使用以下用户/组运行apache /etc/apache2/envvars: export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data 在html代码中,我有一个请求: myRequest.open("GET", "/cgi-bin/getImage1.cgi", true); myRequest.send(); 在/usr/lib/cg

我正试图通过网络摄像头捕获图像并将其显示在网页上,但我收到了“拒绝许可错误”

我正在使用以下用户/组运行apache /etc/apache2/envvars:

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
在html代码中,我有一个请求:

myRequest.open("GET", "/cgi-bin/getImage1.cgi", true);
myRequest.send();
在/usr/lib/cgi-bin中,我有一个文件:getImage1.cgi

#!/bin/bash
rm image1.jpg
fswebcam -r 640x400 --no-banner --deinterlace -q -d /dev/video0 --jpeg 95 image1.jpg
文件和目录权限为:

In /usr/lib          drwxrwxrwx  2 root     www-data   4096 May 14 19:37 cgi-bin
In /usr/lib/cgi-bin  -rwxr-xr-x  1 www-data www-data   115  May 14 18:51 getImage1.cgi
In /dev              crw-rw----+ 1 root     video      81,0 May 14 18:02 video0
用户www数据是以下组的成员:

$ id www-data
uid=33(www-data) gid=33(www-data) groups=33(www-data),44(video)
当我运行网页时,我得到以下错误代码:

rm: cannot remove 'image1.jpg': No such file or directory
Error opening device: /dev/video0
open: Permission denied
Unable to find a source module that can read /dev/video0.
End of script output before headers: getImage1.cgi, 
该错误表示它正在执行脚本,但用户没有足够的权限访问/dev/video0。 apache用户应该是www数据,它是www数据和视频组的成员,因此它应该可以访问/usr/lib/cgi-bin目录、getImage1.cgi文件和/dev/video0网络摄像头

如果我从控制台执行脚本,它可以正常运行


如果有人能提供建议,我将不胜感激。

关于
/dev
本身的权限是什么?我已经在上面添加了视频设备的权限。所有者是root:video。如前所述,我将www数据用户添加到视频组中。权限是660,很难更改这些权限,因为它们在重新启动时会返回默认值。我说的是
/dev
,而不是
/dev/video0
。如果用户/组被锁定在文件夹之外,则他无法访问
video0
。这将是一个奇怪的设置,但只是检查。所有/dev设备都是root。我在/etc/group中将用户www数据添加到根组,现在一切正常。这对这个设置来说是可行的,但我确信给web访问根权限不是管理系统的安全方法。绝对不是。。。这基本上允许恶意用户以root身份从web脚本执行任何操作