apache虚拟主机与suExec及PHP的问题

apache虚拟主机与suExec及PHP的问题

我正在配置一个利用vhost_alias模块配置的web服务器。但我遇到了些问题,麻烦各位能指教一二。
比如有这样的目录结构:

/home
  +-- user1
         +----  other_files
         +----  abc_com
   +-- user2
         +----  xyz_com
/www
   +--- abc.com
   +--- xyz.com

/www/abc.com是指向/home/user1/abc_com的软链
/www/xyz.com是指向/home/user1/xyz_com的软链

httpd.com中有以下配置

QUOTE:
VirtualDocumentRoot /www/%0

使得访问abc.com的时候读取的是/www/abc.com,而最终读取到/home/user1/abc_com里面的内容

apache以apache:apache身份运行
id apache得到以下

QUOTE:
uid=500(apache) gid=500(apache) groups=500(apache)

1. 我希望PHP的工作目录限定在各自的DocumentRoot内。也就是说,在abc.com下不能访问到xyz.com的文件内容。
2. 因为要限定用户的使用空间大小,我希望当使用/home/user1/abc_com/下的一个upload.php上传文件的之后生成的文件的属主同upload.php的一致。也就是说,如果利用这样的文件上传一个temp.txt:

QUOTE:
-rw-r--r--  1 user1 web-users 47759 Feb 29 11:25 upload.php

将会生成如

QUOTE:
-rw-r--r--  1 user1 web-users 47759 Feb 29 11:25 temp.txt

这样的文件。

问题:
对于第一个问题,我想设置safe_mode为On就可以解决问题。
对于第二个问题,我尝试把PHP设为CGI方式运行,并编译suExec。这里就产生了几个用户的权限:apache运行用户、php-cgi文件的属主、upload.php文件的属主。suExec在编译的过程中曾用到了 --with-suexec-caller --with-suexec-userdir 这两个选项。
suexec-caller是否应该是apache的运行用户?suexec-userdir这项应该如何设置呢?

最近几天一直在这些问题上打转,似乎没有太大的进展,哪位兄弟曾经接触过这类问题,能否指点一二?
另外,我的思路是否有问题?
我配置下来的结果是,PHP以CGI方式运行,但上传之后的文件的属主是apache用户的,我怀疑suExec没有成功运行,或是总体思路不正确。
嗯,初步的解决方法是修改suexec.c,重新设置程序执行的uid/gid。
不知道有没有更好的方法。不过修改suexec.c确实是最快的方案。另外发现mod_vhost_alias和mod_security2的chroot有点冲突。
先看看apahce手册中suexec相关内容吧