Web 服务器目录权限

Web 服务器目录权限

我希望有人能帮助我了解 Web 服务器目录权限。Apache、CentOS、PHP、Mysql

例如,我在 /var/www/html 中有多个站点,它们的路径如下:/var/www/html/www_domainname_com

在每个站点内我可能都有一个像 /lib/mysql/ 这样的路径,比如 PHP 连接内容、数据库配置等等。

我应该设置哪些权限才能防止有人浏览该目录?我应该只使用 .htaccess 吗?

我的所有 Web 目录的所有者都是 apache:apache。

我可以阻止某人抓取我的网络服务器的某些目录吗?我有一个 robots.txt,但爬虫程序如何遵守它?

总结一下:1. 对于我的敏感文件,最好的所有者/权限设置是什么?这些文件是 Web 服务器或 php 或 mysql 需要的,但我不希望别人浏览?

  1. 我可以阻止直接抓取部分内容吗?

答案1

是的。

您要做的就是为每个站点强制执行 open_basedir 指令。您指定一个目录,因此任何 PHP 脚本都无法爬出该目录。

这意味着您需要为每个网站设置一个特定的指令,因此您可以通过 .htaccess 或每个站点的 php.ini 设置上述指令。

要实现最后一个选项,您将需要 suPHP 或类似的东西。

答案2

虽然 Antoine Benkemoun 的回答解决了你提出的具体问题(这些问题之前已经被问过和回答过很多次了,例如这里),让所有目录/文件都由 Web 服务器运行时所在的同一个 uid 进行写入是一个非常糟糕的主意。

我推荐一个相当通用的解决方案,就是在每个 vhost 中有一个单独的目录,该目录可由 web 服务器写入(但禁用 PHP/CGI 功能),而其他地方的所有文件均可由所有人(包括 web 服务器)读取,并可由所有者和组写入 - 并且所有用户都应该能够在相关组中更新文件(您可能希望为每个 vhost 设置一个组),并在目录上设置粘性组位。

请注意,这不能替代每个虚拟主机的 open_basedir 选项。

您还应该根据每个 vhost 设置默认会话保存路径和包含路径(这需要由 web 服务器 uid 可写入)。

C。

答案3

您可以考虑将这些文件放在您可通过网络访问的文件夹之外,而不是摆弄这些文件夹的权限。毕竟(正如您所说),没有人需要打开这些文件。因此,请将它们放在您的网络目录的上一级(如果您有权访问该目录),这样您就可以确保网络用户可以浏览这些文件。

相关内容