我的服务器是centos 7
, php 5.4
, apache 2.4
。我的网站位于/var/www
.
至于apache
只有一个用户读取或写入/var/www
,我将所有文件和文件夹的所有者和组设置为apache
:
对于文件夹和文件只读:-r------- 1 apache apache 922 Jun 3 2014 connect.php
对于需要写入的文件:-rw------- 1 apache apache 922 Jun 3 2014 connect.php
这意味着只有600
或400
文件权限。(*.php不需要x
权限)
至于文件夹权限,只有500
或700
。
这应该是最佳做法,因为尽可能少地提供许可。
有什么安全问题吗?
不,这不是最佳实践。运行 apache 的用户不应拥有任何文件或目录。这个用户应该只有对任何东西的读取权限,尤其是对可执行文件,例如
*.php
,除非特定情况下特别需要写入权限,例如上传目录。这样做的原因很简单:如果攻击者能够找到允许他们在 Web 服务器进程中执行自己的代码的漏洞,那么他们就能够写入 Web 服务器可以写入的任何文件。如果 Web 服务器对可执行文件具有写入权限,那么这意味着他们可以更改可执行文件以执行攻击者选择的任何操作,只要用户访问相应的 URL。即使他们只有对不可执行文件(例如
*.html
)的写入权限,这也使他们能够控制发送给您网站用户的内容,包括向他们发送恶意 javascript 或嵌入内容的能力。让 Web 服务器用户
chmod 400
拥有的文件也不是更好,因为拥有文件的用户可以随意更改其权限以赋予自己写访问权限。