我想这更像是一个pipe家的问题,但是这里就是这样。
如果我创build一个名为index.html.bak备份文件,是否有可能从外部使用http在我的apache2服务器上的某个人能够列出我的/var/www目录的内容? 我目前不知道这样做的方法,但这可能是由于我在这个领域缺乏经验。 我应该存储不需要在其他地方查看的文件吗?
目前,我认为有人可能会发现该文件的唯一可行的方式是,如果有指向该文件的某个明确的链接。 我的网页目录有多清晰?
要直接回答你的问题 – 你可以把这些文件保存在其他地方,或者你可以configurationApache来拒绝对它们的访问 – 拒绝访问* .bak是相对简单的。
除非被configuration为不这样做(如上述MH所述),否则Apache将为任何不包含索引文件的目录(由DirectoryIndex指令定义,但通常为index.html,index.htm)生成并显示一个目录列表, index.php和类似的。
在更一般的说明:
您可能要考虑使用SVN或git(甚至RCS)等版本控制系统来保留旧版本和网页的更改历史logging(包括查看更改内容和更改时间的function,更重要的是,恢复到以前的版本)
git和svn都需要在其他地方build立一个仓库。 RCS是相当原始和基本的,但不需要任何设置,它将修订历史logging保存在相同的目录中或存在于./RCS子目录中。 RCS的一个小麻烦是,当你签入一个文件时,它将权限改为只读,所以你必须重新检查它,然后才能再次编辑它(或者使用ci -l来签入一个文件并立即检查出来)。
IMO git对于这个工作可能是过分的,SVN在pipe理一组手工编辑的HTML页面的修订历史的复杂性和能力方面接近理想,并且RCS是陈旧的,但仍然有用。 使用RCS,只能在/ var / www中直接编辑文件,这意味着一旦保存文件,更改就会“实时”。 使用svn或者git,你可以在你的桌面机器上签出一个本地副本,比如你的桌面机器的主目录,编辑这些文件,检入更改,然后在服务器上的/ var / www中签出更新完了。 在生产服务器上检查之前,您还可以首先检出登台服务器的更改以进行testing。
然后,您可以拒绝访问与Apache的.svn /,.git /,RCS / etc子目录 – 例如请参阅https://stackoverflow.com/questions/398008/deny-access-to-svn-folders-on-apache
当然,有效地使用修订控制将需要一点纪律。 你必须养成检查你的改变的习惯,这是值得的。
如果您为相关Directory指定Options -Indexes ,则Apache将不会生成目录列表。 但是,如果有人猜测文件名,如果操作系统允许Web服务器访问文件,他们仍然可以访问它。
如果您启用了目录列表,那么该文件肯定是可见的。 即使没有启用目录列表,也不build议保存一个你不希望别人在/ var / www中看到的文件,因为这个文件是用于公共文件的。
我没有看到将备份文件保存在/var/www任何一点。
备份是为了快速修复事情时,你拧了。 我build议你做一个新的备份目录,在一些核心驱动器( 外部世界无法访问 ),并在那里存储你的备份。