在共享的apache上保护php

我将在服务器上安装apache + php,其中两个用户A和B将部署他们的网站。 为了安全起见,我试图实现用户空间的隔离:那就是站点A的脚本不应该能够读取站点B中的文件。

为了达到这个目的,我安装了suphp。 用户A的网站文件由A:A拥有,Perm = 700,B的用户由B:B拥有,Perm = 700。 Suphp工作得很好,但是apache抱怨读取.htaccess的权限。

我怎样才能让apache读取A和B的每个目录中的.htaccess,同时保持站点A和站点B之间的隔离? 我玩所有权(组= www数据)和权限(750),但我发现没有办法保持隔离授予。 任何想法?

也许通过以root身份运行apache,但在这种情况下是否有任何缺点?

作为一个旁注,严格来说,你甚至可以把这个:

disable_functions = “apache_child_terminate, apache_setenv, define_syslog_variables, escapeshellarg, escapeshellcmd, eval, exec, fp, fput, ftp_connect, ftp_exec, ftp_get, ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist, highlight_file, ini_alter, ini_get_all, ini_restore, inject_code, mysql_pconnect, openlog, passthru, php_uname, phpAds_remoteInfo, phpAds_XmlRpc, phpAds_xmlrpcDecode, phpAds_xmlrpcEncode, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec, syslog, system, xmlrpc_entity_decode” 

在/etc/php5/apache2/conf.d/disable_functions.ini中

http://forums.eukhost.com/f42/disabling-dangerous-php-functions-6020/

我希望这不是偏离主题。

那么,我解决了。

主目录是perm = 750,owner = A:www-data(或B:www-data)。 在家里,所有的目录和文件都由A:A(或B:B)拥有,perm = 644或者755。 这样做,运行www-data的apache总是能够读取所有目录中的.htaccess,而用户A不能读取用户B的任何内容,因为它的主目录是750,对于A来说是0。

感谢您给出的build议; 这些对于提高安全性是有用的