2016-11-22 88 views
-1

我正在尝试编写Web服务器(lighttpd)的PHP脚本来读取另一个用户中的文件。 Web服务器用户下运行的http:权限在尝试读取具有644权限的文件时被拒绝

http  1929 336 0 Nov20 /usr/bin/lighttpd -D -f /etc/lighttpd/lighttpd.conf 

脚本试图读取该文件具有以下权限:

-rw-r--r-- 1 pi www-data 721 Oct 30 05:20 /home/pi/bmSunday 

而且我认为他的意思是任何用户都可以阅读。

在一个权限脚本结果则fopen否认:

Warning: fopen(/home/pi/bmSunday): failed to open stream: Permission denied in /srv/http/p1/index.php 

我运行的Arch Linux。

uname -r 

显示:

4.4.32-2-ARCH 

什么权限需要在文件中,以便用户的HTTP设置允许读呢?

顺便说一句,我在假设我还可以通过测试权限纠正:

sudo -u http cat /home/pi/bmSunday 

使用上面的命令,结果是:

cat: /home/pi/bmSunday: Permission denied 
+0

检查'/家庭/ pi'的权限,确保它拥有世界执行权限。 – Barmar

回答

0

上目录的权限是可能是错的,http可能没有执行权限。添加世界执行权限:

chmod o+x /home/pi 
0

您(作为用户)在您的示例中没有执行权限。所以是的chmod + x文件。请记住,这会将执行添加到其他用户。

0

如果您给其他用户的主目录上的所有其他用户执行权限,则会危及所有其他用户的安全。如果您仅通过acl授予http用户权限,则会更好。

$ setfacl的-m U:HTTP:R-X /家庭/ PI