我正在尝试为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
答案 0 :(得分:0)
目录上的权限可能不对,http
可能没有执行权限。添加世界执行权限:
chmod o+x /home/pi
答案 1 :(得分:0)
您的示例中的(作为用户)没有执行权限。所以是chmod + x文件。请记住,这会向其他用户添加执行。
答案 2 :(得分:0)
如果您授予所有其他用户对其他用户的主目录的执行权限,则会危及所有其他用户的安全性。如果你只通过acl授予http用户权限会更好。
$ setfacl -m u:http:r-x / home / pi