![我的 /var/www 对外界有多大可见性?](https://linux22.com/image/590877/%E6%88%91%E7%9A%84%20%2Fvar%2Fwww%20%E5%AF%B9%E5%A4%96%E7%95%8C%E6%9C%89%E5%A4%9A%E5%A4%A7%E5%8F%AF%E8%A7%81%E6%80%A7%EF%BC%9F.png)
我想这更像是一个家务问题,但我还是想提一下。
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
。
备份是为了在搞砸事情时快速修复。我建议你在某个核心驱动器中创建一个新的备份目录(无法与外界联系),并将您的备份存储在那里。