Apache2 - 如何设置网站文件夹的目录权限?

Apache2 - 如何设置网站文件夹的目录权限?

我正在使用 CentOS 来提供 PHP 网页。

我在“/svr/www”里面有各种网站...我的问题是我创建了如下文件夹:

/svr/www/website1.com
/svr/www/website2.com

并且此文件夹的所有者为“root”用户,我注意到 apache 无法在此文件夹中创建新文件。

我在 apache error.log 中遇到以下错误:

[Sat Oct 22 17:50:44 2011] [error] [client xx.xxx.xxx.xxx] PHP Warning:  fopen(../index.htm): failed to open stream: Permission denied in /srv/www/site1.com/public/gne/gnerate.php on line 228
[Sat Oct 22 17:50:44 2011] [error] [client xx.xxx.xxx.xxx] PHP Warning:  fputs() expects parameter 1 to be resource, boolean given in /srv/www/site1.com/public/gne/gnerate.php on line 229
[Sat Oct 22 17:50:44 2011] [error] [client xx.xxx.xxx.xxx] PHP Warning:  fclose() expects parameter 1 to be resource, boolean given in /srv/www/site1.com/public/gne/gnerate.php on line 230

我的问题是...在 apache 需要读取、写入和执行的文件夹中设置权限的正确方法是什么?

对此有什么线索吗?

此致,

答案1

通常,您的 Apache 服务器应该有权读取任何需要提供服务的内容,而写入权限应严格限制在 Web 应用程序运行所需的文件和文件夹。您永远不应该拥有所有人都可写入的文件(例如 777)。

您可以进行设置,以便您自己的用户拥有这些文件,但 apache 组拥有组所有权。

然后通过用户授予自己所需的权限,并通过设置组权限严格限制Web服务器。

答案2

1)输入以下命令检查 Apache 在哪个用户下运行

 ps -ef | grep httpd

2)更改您希望 apache 能够写入的文件夹的权限(仅更改这些文件夹的权限,以确保更“安全”)3)其他所有内容都可以拥有您喜欢的任何用户/权限,重要的是 apache 用户将能够读取这些目录(因此文件夹的权限至少应为 755,文件的权限至少应为 644)。

答案3

Apache 和 php 以apache用户身份运行。为了赋予 Apache(和 PHP)读写权限,您应该首先使用 更改文件的所有者chown -R apache: /srv/www/*

您还应确保 PHP 安装的安全。以下是一份快速全面的指南:http://www.jamescun.com/2011/10/securing-php/。你也可以看看http://www.phpgenious.com/test/phpsecurity.pdf(PDF 文件)——有点旧,但足以帮助您开始保护 PHP。

相关内容