Setting up suEXEC
polar@codd ~ % 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"
If AP_DOC_ROOT does not correspond to the preferred docroot (/home in our case):
cd /root/apache apt-get source apache2 tar zxfv apache2_2.2.3.orig.tar.gz cd httpd-2.2.3 cd support
In suexec.h change
#define AP_HTTPD_USER "www"
to
#define AP_HTTPD_USER "www-data"
#define AP_LOG_EXEC DEFAULT_EXP_LOGFILEDIR "/suexec_log" /* Need me? */
to
#define AP_LOG_EXEC "/var/log/apache2/suexec.log" /* Need me? */
#define AP_DOC_ROOT DEFAULT_EXP_HTDOCSDIR
to
#define AP_DOC_ROOT "/home"
In ap_config_auto.h change
#define AP_DOC_ROOT "/var/www"
to
#define AP_DOC_ROOT "/home"
In suexec.c comment out
if ((uid != dir_info.st_uid) ||
(gid != dir_info.st_gid) ||
(uid != prg_info.st_uid) ||
(gid != prg_info.st_gid)) {
log_err("target uid/gid (%ld/%ld) mismatch "
"with directory (%ld/%ld) or program (%ld/%ld)\n",
uid, gid,
dir_info.st_uid, dir_info.st_gid,
prg_info.st_uid, prg_info.st_gid);
exit(120);
}
aptitude install apache2-mpm-worker cp -p /usr/include/apache2/* . cp -p /usr/include/apr-0/* .
make suexec
mv /usr/lib/apache2/suexec{,.bak}
cp suexec /usr/lib/apache2/
chmod 4755 /usr/lib/apache2/suexec
Restart Apache.