尝试读取具有644权限的文件时拒绝权限

时间:2016-11-22 00:55:50

标签: linux permissions

我正在尝试为Web服务器(lighttpd)编写PHP脚本以读取另一个用户的文件。 Web服务器在用户http:

下运行
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

3 个答案:

答案 0 :(得分:0)

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

chmod o+x /home/pi

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

$ setfacl -m u:http:r-x / home / pi