我将在一个服务器上安装apache+php,两个用户,A和B将部署他们的网站。出于安全原因,我试图实现用户空间的隔离:也就是说,站点A中的脚本不应该能够读取站点B中的文件。
为此,我安装了suphp。用户A的网站文件属于perm=700的A:A,B的用户属于perm=700的B:B。Suphp工作得很好,但是apache抱怨读取.htaccess的权限。
我如何让apache在A和B的每个部分读取.htaccess,同时保持站点A和站点B之间的隔离?我玩了所有权(group = www-data)和权限(750),但是我找不到保持隔离的方法。有什么想法吗?
也许通过将apache作为root运行,但是在这种情况下有什么缺点吗?
发布于 2012-10-28 20:42:23
作为一个副手,更严格地说,你可以这样说:
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” in: /etc/php5/apache2/conf.d/disable_functions.ini
http://forums.eukhost.com/f42/disabling-dangerous-php-functions-6020/
我希望这不是离题。
发布于 2012-10-29 09:17:45
我想我已经解决了。
主目录是perm=750,owner=A:www-data (或B:www-data)。在家庭内部,所有目录和文件都由A:A (或B:B)拥有,perm=644或755用于dir。这样,运行为www-data的apache总是能够在所有目录中读取.htaccess,而用户A不能读取用户B的任何内容,因为它的主目录是750,对于A是0。
谢谢您的建议,这些建议对提高安全性很有帮助。
https://serverfault.com/questions/443186
复制相似问题