Gallery:如何为G2配置open basedir

来自站长百科
跳转至: 导航、​ 搜索

如何为G2配置open_basedir[ ]

注: 对于共享的webhosting,我们推荐chroot + apache2 + php-fastcgi + suexec,这样可以保证不但快速而且安全的环境。open_basedir则是的能够显著加强安全性的一个组件。

在共享的webhosting环境中(或者你为多个用户托管多个G2时),PHP open_basedir 不失为一个增强安全性的好办法。有了open_basedir,帐户所有者X将不再能够访问帐户所有者Y的文件了。但如果没有open_basedir(或其他相类似的安全性防范措施)的话,用户X可以阅读用户Y的config.php文件,用户X可以删除用户Y的相册等等(当然,这对于经过合理配置chroot + php-fastcgi + suexec 的web服务器不适用)。

自http://www.php.net/manual/en/security.apache.php:

有比每次都分别在一个新实例--这很浪费资源--中启动虚拟主机更好的解决办法。
你可以为所有虚拟主机动态地设置open_basedir,这样每个虚拟主机上的PHP脚本都会被局限在其文档根目录下了。
举例:
<VirtualHost www.example.com>
  ServerName www.example.com
  DocumentRoot /www-home/example.com
[...]
  <Location />
   php_admin_value open_basedir    \ "/www-home/example.com/:/usr/lib/php/"
  </Location>
</VirtualHost>
如果开启了safe_mode,脚本则只能使用指定目录中的二进制(创建一个仅含用户可能用到的二进制的特殊dir)。
现在虚拟主机上的用户将无法读/写/修改其他用户的数据了。

如果你结合符号链接(symlink)使用open_basedir的话,那么就有可能遇上当前G2的安装问题。 open_basedir + symlink的问题概要: [b]符号链接[/b]和[b]open_basedir[/b]尚存在一个问题。如果你使用其中的一个,没有问题;但同时使用的话就会出现问题。 http://bugs.php.net/bug.php?id=30188上对于php dev的解释是正确的:

  • Bug报告我的安装:

文档根目录是:"/home/wejn/x/docs/html/".

而"/home/wejn/x/docs/html/" 符号链接到: "/home/wejn/x/docs1/html/".

我启用了safe_mode并且将open_basedir设置为 "/home/wejn/x/docs/html:/home/wejn/x/docs1/html".

此安装我无法执行:

copy("/home/wejn/x/docs/html/x", "/home/wejn/x/docs/html/y");

  • PHP dev的应答使用"/home/wejn/x/docs/html:/home/wejn/x/docs1/html"作为

open_basedir的值无意义,类似于 "/home/wejn/x/docs/html:/home/wejn/x/docs/html",因为open_basedir的 值也被解析了。

显然PHP无法解析"/home/wejn/x/docs1/html/y",因为它甚至 不存在。因此它将不存在的"/home/wejn/x/docs1/html/y" 与"/home/wejn/x/docs/html/"做比较,并报告两者是不同的。

  • 你可以发布一个对G2特点的请求,这样在每次复制,fopen前我们能够略有所知,... 这是modules/core/classes/GalleryPlatform.class和modules/core/classes/GalleryPlatform/*Platform.class中的一个小修正