前提
Apacheに付属するSuExecを使用し、且つ、VirtualHostでもSuExecを使用したい。
デフォルトでは次のようになっており、SuExecが使用出来ない。
# suexec -V -D AP_DOC_ROOT="/usr/local/www/data" -D AP_GID_MIN=1000 -D AP_HTTPD_USER="www" -D AP_LOG_EXEC="/var/log/httpd-suexec.log" -D AP_SAFE_PATH="/usr/local/bin:/usr/local/bin:/usr/bin:/bin" -D AP_UID_MIN=1000 -D AP_USERDIR_SUFFIX="public_html"
portsからインストールするときに、make config でおこなっても DOC_ROOTを選択することが出来ないため、次のようにしておこなう。
# cd /usr/ports/www/apache22 # make SUEXEC_DOCROOT=/home
それ以外のオプションについては、 Makefile.doc に記載があり次のようになっています。
WITH_SUEXEC: Enable suExec support SUEXEC_DOCROOT: SuExec root directory SUEXEC_USERDIR: User subdirectory (default public_html) SUEXEC_SAFEPATH: Set the safepath SUEXEC_LOGFILE: Set log file for suexec (default: /var/log/httpd-suexec.log) SUEXEC_UIDMIN: Minimal allowed UID (default 1000) SUEXEC_GIDMIN: Minimal allowed GID (default 1000) SUEXEC_CALLER: User allowed to call SuExec (default ${WWWOWN} (www)) SUEXEC_UMASK: Defines umask for suexec'd process(default:unset)
無事にインストールが完了すると、次のようになります。
# suexec -V -D AP_DOC_ROOT="/home" -D AP_GID_MIN=1000 -D AP_HTTPD_USER="www" -D AP_LOG_EXEC="/var/log/httpd-suexec.log" -D AP_SAFE_PATH="/usr/local/bin:/usr/local/bin:/usr/bin:/bin" -D AP_UID_MIN=1000 -D AP_USERDIR_SUFFIX="public_html"
うまく、動くのを確認したら、 /etc/make.conf に書いておきましょう。
# echo "SUEXEC_DOCROOT=/home" >> /etc/make.conf
実際に使いたいドメイン等のvirtual host 次のように記述することでSuExecが使用可能になります。
<VirtualHost *:80> ServerAdmin foo@example.com DocumentRoot /home/www/example.com/public_html ServerName example.com SuexecUserGroup foo bar DirectoryIndex index.html … </VirtualHost>