符号链接的性能和安全因素

符号链接的性能和安全因素

我正在考虑为正在运行的一些 PHP 应用程序推出一个精简版的发布管理版本。

本质上,该计划是将每个版本存储在 /home/release/1.x 等中(从 SVN 中的标签导出),然后对 /live_folder 进行符号链接并更改 apache 配置中的文档根目录。

我对设置所有这些没有任何问题(我实际上现在已经让它工作了),但是我是一名开发人员,只具有服务器管理方面的基本知识。

使用此发布管理方法时,从安全或性能角度来看我需要注意什么吗?

谢谢

答案1

如果你真的担心符号链接的性能问题(最小),那么你可以使用绑定挂载相反。您也不会有任何安全隐患。绑定挂载基本上是一个纯粹存在于内核级别的符号链接。

但您可能不应该真正担心性能方面的问题,除非您有证据证明这是一个真正的问题。

此外,实际上,在 Apache 中启用符号链接在某些情况下实际上会提高性能,因为一些文件系统检查被删除了。除非您有理由禁用它,否则您可能希望启用 FollowSymLinks。

请参阅 Apache 文档中有关符号链接的性能调整部分。 http://httpd.apache.org/docs/2.2/misc/perf-tuning.html#symlinks

FollowSymLinks 和 SymLinksIfOwnerMatch

在您的 URL 空间中,如果您没有 Options FollowSymLinks,或者您有 Options SymLinksIfOwnerMatch,Apache 就必须发出额外的系统调用来检查符号链接。每个文件名组件都需要一个额外的调用。

FollowSymLinks 的安全隐患往往都集中在允许不受信任的用户创建文件的能力上。如果您在共享服务器上,如果您允许不受信任的用户写入文件系统,或者如果您托管的任何 Web 应用程序存在任何错误,那么恶意用户可能会创建指向通常无法通过 Web 服务器访问的文件的符号链接。他们可以显示它,或者如果您的权限非常糟糕,并且您的 Web 应用程序存在错误,那么符号链接可能会允许修改。在锁定良好的系统上,这应该不是什么大问题。如果您有任何允许您存储用户提供的内容的目录,则应禁用跟随那里的符号链接。

答案2

指向正确目录的单个符号链接不会影响性能,因为它将被 VFS 缓存。

出于安全考虑,您可能需要在服务器中启用符号链接跟踪,这可以成为一个问题。首先要做的是禁用除应用程序目录链接之外的符号链接。但是,我认为最好有一个适当的、完整的安全解决方案,以确保所有应用程序只具有它们所需的权限 - 例如,您可以使用 FastCGI 在自己的用户帐户下运行您的 PHP 应用程序。

答案3

符号链接会影响性能,因为磁盘必须查找两个位置(如果有多个链接要跟踪,则查找更多位置)才能读取文件。除此之外,这应该不是问题。我不知道有任何安全隐患...

相关内容