我的 /var/www 对外界有多大可见性?

我的 /var/www 对外界有多大可见性?

我想这更像是一个家务问题,但我还是想提一下。

index.html如果我创建了一个名为的备份文件index.html.bak,那么我的 apache2 服务器外部的用户是否http能够列出我的/var/www目录的内容?我目前不知道如何做到这一点,但这可能是因为我在这方面缺乏经验。我是否应该将不需要的文件存储在其他地方?

目前,我认为唯一可行的方法是某处有指向该文件的明确链接。 我的网络目录的可见性如何?

答案1

直接回答您的问题 - 您可以将此类文件保存在其他地方,也可以配置 apache 以拒绝访问它们 - 拒绝访问 *.bak 相对简单。

Apache 将生成并显示任何不包含索引文件的目录列表,除非配置为不这样做(如上面的 MH 所述),由 DirectoryIndex 指令定义,但通常是 index.html、index.htm、index.php 等。

更一般地来说:

您可能需要考虑使用修订控制系统(如 SVN 或 git(甚至 RCS))来保留旧版本和网页的更改历史记录(包括查看更改的内容和时间,更重要的是,恢复到以前版本的能力)

git 和 svn 都需要在其他地方设置存储库。RCS 相当原始和基本,但不需要任何设置,它将修订历史记录保存在同一目录中,或者如果存在 ./RCS 子目录中。RCS 的一个小麻烦是,当您签入文件时,它会将权限更改为只读,因此您必须再次签出它才能再次编辑它(或使用它ci -l签入文件并立即签出)。

我认为 git 可能不适合这项工作,SVN 在复杂性与管理一组手动编辑的 HTML 页面的修订历史的能力方面接近理想,而 RCS 虽然过时但仍然有用。使用 RCS,您只能直接在 /var/www 中编辑文件,这意味着更改在您保存文件后立即生效。使用 svn 或 git,您可以签出本地副本,例如台式机上的主目录,编辑文件,签入更改,然后在完成后将更新签出到服务器上的 /var/www。您还可以先将更改签出到暂存服务器进行测试,然后再将它们签出到生产服务器。

然后,你可以使用 apache 拒绝访问 .svn/、.git/、RCS/ 等子目录 - 例如参见https://stackoverflow.com/questions/398008/deny-access-to-svn-folders-on-apache

当然,有效地使用修订控制需要一些纪律。你必须养成每次进行更改时检查更改的习惯——这是值得的。

答案2

如果您指定了相关Options -Indexes内容Directory,Apache 将不会生成目录列表。但是,如果有人猜出了文件名,他们仍然可以访问它,前提是操作系统允许 Web 服务器访问该文件。

答案3

如果您启用了目录列表,那么该文件肯定是可见的。即使未启用目录列表,也不建议将您不想让别人看到的文件保存在 /var/www 中,因为它是用于公共文档的。

答案4

我认为保留备份文件没有任何意义/var/www

备份是为了在搞砸事情时快速修复。我建议你在某个核心驱动器中创建一个新的备份目录(无法与外界联系),并将您的备份存储在那里。

相关内容