在共享 Apache 上保护 PHP

在共享 Apache 上保护 PHP

我将在一台服务器上安装 apache+php,两个用户 A 和 B 将部署他们的网站。出于安全原因,我试图实现用户空间的隔离:即来自站点 A 的任何脚本都不能读取站点 B 中的文件。

为了实现这一点,我安装了 suphp。用户 A 的网站文件归 A:A 所有,权限为 700;用户 B 的网站文件归 B:B 所有,权限为 700。Suphp 运行良好,但 apache 抱怨读取 .htaccess 的权限。

如何让 apache 读取 A 和 B 的每个目录中的 .htaccess,同时保持站点 A 和站点 B 之间的隔离?我尝试了所有权(组 = www-data)和权限(750),但找不到保持隔离的方法。有什么想法吗?

也许可以通过以 root 身份运行 apache,但在这种情况下有什么缺点吗?

答案1

附注:为了更加严格,你可以这样写:

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/

我希望这没有偏离主题。

答案2

嗯,我想我已经解决了。

主目录的权限为 750,所有者为 A:www-data(或 B:www-data)。在主目录中,所有目录和文件均归 A:A(或 B:B)所有,目录的权限为 644 或 755。这样,以 www-data 身份运行的 apache 始终能够读取所有目录中的 .htaccess,而用户 A 无法读取用户 B 的任何内容,因为其主目录为 750,而对于 A 而言为 0。

感谢您提出的建议;这些建议对于提高安全性很有用

相关内容