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中的一个小修正