尝试下载位于 /var/www/html 的文件时出现 403 禁止访问?

尝试下载位于 /var/www/html 的文件时出现 403 禁止访问?

我正在尝试将文件从我的服务器复制到我的台式电脑。我将其放在/var/www/html(网页所在的位置),当我尝试下载它时,我得到了403 Forbidden。我甚至尝试过chmod 777下载该文件,但并没有解决问题。

我做错了什么以及为什么会出现这个错误?

答案1

您需要修改该文件,使其归 Apache 用户所有。默认情况下,Apache 将以用户www-data(在组中www-data)的身份运行。您可以使用chown来修改文件的所有者(可能必须与 一起使用sudo):

chown -R www-data:www-data /var/www/html

最后,你需要确保文件已经至少为 Apache 用户设置读取和执行权限。正如您所说的,您已经完成了此操作,但在修改所有权限/文件所有者后,您应该通过运行来确保一切正常 ls -l /var/www/html。作为一项安全措施,删除其他用户的所有权限也是明智之举:

chmod -R 0550 /var/www/html

请注意,如果您使用 PHP 或其他需要写入权限的脚本语言,则可能需要修改上面的权限掩码0770。作为预防措施,仅在需要的目录上使用该掩码(例如写入网站缓存数据或上传文件)

答案2

我正在使用 CentOS 7 + Apache,唯一能解决我的问题的命令是它(因为我之前尝试过 chown+chmod):

sudo setenforce 0 #禁用 SELinux

然后,我可以下载该文件(在我的情况下是anyfile.zip),但是,它可以为攻击者编写和执行代码打开大门。

答案3

你可能已经SELinux已启用。目前最简单的解决方法是将相关文件的权限更改为 Apache 运行时所用的用户 ID。

相关内容