Apache 是否应该具有对 Web 根目录的写访问权限?

Apache 是否应该具有对 Web 根目录的写访问权限?

可能重复:
对我的网站来说,使用哪种 Linux 权限最好?

我正在尝试获得有关如何设置 apache 相对于 Web 根目录的权限的规范答案 ( /var/www)。根据此非常受欢迎的答案,给予 apache 写访问权限/var/www似乎没问题,然而别处(见评论)这似乎是不行的。

有人能解释一下吗?如果这本身就是一种安全风险,你能准确描述一下它会如何被利用吗?

更新:
我们假设一个私人服务器,其中我们关心的唯一两个用户是“apache”和“root”。

答案1

授予用户对目录的写入权限意味着该用户对该目录中的任何内容拥有写入、修改和删除权限,无论其中包含的文件的所有者或个人权限如何。 Web 服务器用户代表有权访问其所服务网站的任何人工作。在大多数情况下,任何人都是一般的互联网用户,除非制定了特定的安全规则。因此,互联网上任何具有基本知识的人都可以删除和/或修改文件,或将不需要的内容放入您的目录结构中以供其使用。

建议的解决方案是在公共结构之外建立一个可写目录,安全脚本可以访问该目录,以便向公众写入/呈现内容。如果您绝对必须在公共结构内有一个可写目录,我会将其设置为一个不起眼的低级目录,永远不会被一般互联网引用用于读取目的。但绝不会将其放在网站结构的顶层。

不幸的是,对于如何利用面向 Web 的服务器写入不受保护的文件系统这一一般性问题,没有答案。这取决于 Web 服务器和支持服务(例如:PHP、JAVA 等)以及您正在运行的特定版本的漏洞,以及网站上可能运行的任何不安全脚本(PHP、CGI、PERL、JAVA)。关键是,作为 Web/系统管理员,您不应该对磁盘进行写入,完全相信上述任何一项可以保护您。此外,传播此类信息是不道德的。

答案2

这两个链接之间的主要区别在于,第一个链接仅将权限 775 设置为文件夹。第二个将权限 775 设置为其下的所有文件和文件夹以及其本身后者是个大问题,因为这会使所有文件都可执行。例如,您不希望用户上传的文件被执行。

除了文件之外,还涉及文件夹本身的安全性:

如果 apache 对该文件夹具有完全访问权限,并且它是一个共享环境(例如共享主机),则可以生成 apache 进程的其他用户(无论是合法用户还是黑客)都可以通过 apache 用户添加/修改共享 Web 服务的任何部分。如果这台机器只为单个用户提供服务,我认为两者之间的安全性没有任何显著差异。

相关内容