你好,我已经在 ubuntu 12.04 上安装了 suexec:
apt-get install apache2 apache2-suexec libapache2-mod-fcgid php5-cgi
但是当我运行以下命令时:
sudo /usr/lib/apache2/suexec -V
我得到以下信息:
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="www-data"
-D AP_LOG_EXEC="/var/log/apache2/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=100
-D AP_USERDIR_SUFFIX="public_html"
我正在使用“/home/user/public_html”来为网络用户提供内容,而不是“/var/www”,我怎样才能将根目录更改为“/home”?
答案1
您正在使用 ubuntu。因此重新编译非常简单。
将源存储库添加到 /etc/apt/sources.list 。对于 12.04 运行
echo "deb-src http://de.archive.ubuntu.com/ubuntu/ precise main"|sudo tee -a /etc/apt/sources.list
更改de.archive.ubuntu.com
为您所在的国家/地区。之后更新您的存储库。
apt-get update
更改目录并下载源:
mkdir ~/apache_new ; cd ~/apache_new
apt-get source apache2
apt-get build-dep apache2
它将下载并解压 apache 源代码并安装所有依赖项,因此您将能够构建 apache。但您需要修复 AP_DOC_ROOT。因此,cd 到包含 apache 源代码的目录,并在文件--with-suexec-docroot
中的选项中更改目录路径debian/rules
。因此,现在您需要构建包。您可以使用
debuild -us -uc
就是这样。现在您有了具有固定路径的 apache deb 包。只需使用 安装它sudo dpkg -i
。但要注意更新。更新将抹去您所有的努力。因此,请运行aptitude hold apache2
以禁止更新,并且不要忘记每次手动重新编译它(或为此编写脚本)。
祝你好运。
答案2
或者你可以
apt-get install apache2-suexec-custom
安装后转到
cd /etc/apache2/suexec
编辑文件 vi www-data
您可以看到前两行,进行更改:替换/var/www
为/home
esc
:wq
之后,重新启动 apache
/etc/init.d/apache2 restart
答案3
我正在使用“/home/user/public_html”来为网络用户提供内容,而不是“/var/www”,我怎样才能将根目录更改为“/home”?
实际上你可以使用 mod_userdir
在这种情况下,suexec 将从 /home/user 的所有者(在此示例中为“user”)生成脚本
所以你不需要在 apache 配置中定义 SuexecUserGroup
UPD:只需启用 userdir 模块
并添加到主虚拟主机配置
用户目录 /home/*/public_html
和
<Directory /home/*/public_html/ >
AllowOverride All
Options +ExecCGI
AddHandler cgi-script .cgi .pl .py .rb
</Directory>
答案4
您需要从 suexec.c 重新编译它,理想情况下您可以安装 virtualmin,这样它将通过 install.sh 自动执行此操作,并且还将创建帐户、域等。