HOME / コンピュータTips / Solaris / SolarisでWikiPlus用に(Linuxに似た)のSuExecを作る
Date: 2008/10/25 |
|
Tags: OpenSolaris, Solaris, SuExec
SuExecはセキュリティの関係上、定数でデータが入っているため
ことは、昨日のブログで掲載したとおり。
WikiPlusのディレクトリポリシーは微妙にLinuxの流儀(RHELの流儀?)を継承していることもあり、SolarisではSuExecがうまく動きません。
そこで、SuExecをうまく動かすためには、Linuxと似たような設定で動くsuexecをコンパイルしなくてはならないことになります。
まずは。同一バージョンのapacheのソースコードを拾ってきて、どこかに展開します。
次に、Solarisに入ってるapacheのコンパイル環境をみます。これには、下記のファイルを参照すればOKです。
/usr/apache2/2.2/build/config.nice
これを元にビルド用のスクリプトを書くことになります。ところが、レイアウトの設定が配布されるApacheについておらず・・・
"--enable-layout=Solaris-Apache2"
そこで下記のファイルを見て、レイアウトを作ります。
/usr/apache2/2.2/build/config_vars.mk
作ったレイアウトはこんなかんじです。
# Solaris 10 / OpenSolaris Layout
<Layout Solaris-Apache2>
prefix: /usr/apache2/2.2
exec_prefix: ${prefix}
bindir: ${exec_prefix}/bin
sbindir: ${exec_prefix}/bin
libdir: ${exec_prefix}/lib
libexecdir: ${exec_prefix}/libexec
mandir: ${exec_prefix}/man
sysconfdir: /etc/apache2/2.2
datadir: /var/apache2/2.2
installbuilddir: ${exec_prefix}/build
errordir: ${datadir}/error
iconsdir: ${datadir}/icons
htdocsdir: ${datadir}/htdocs
manualdir: ${datadir}/manual
cgidir: ${datadir}/cgi-bin
includedir: ${exec_prefix}/include
localstatedir: ${prefix}
runtimedir: /var/run/apache2/2.2
logfiledir: ${datadir}/logs
proxycachedir: ${datadir}/proxy
</Layout>
これを、config.layoutの後ろに追加します。
BUILDには、先に、srclib/aprとsrclib/apr-utilをコンパイルする必要がありますが、ここでの目的は「Apacheをインストールする」ことではなくて、「suexecをインストールする」ことです。これに付随してapacheのコンパイルが必要になるため、仕方が無くコンパイルするだけです。
というわけで、ワークディレクトリにのみapr/apr-utilを入れればいいわけですから、結果的にこういうスクリプトになります。
#! /bin/sh
#
# Created by configure
CC="/opt/SUNWspro/bin/cc"; export CC
CFLAGS="-xO3 -xspace -Xa -xildoff -xc99=all -DSSL_EXPERIMENTAL -DSSL_ENGINE"; export CFLAGS
GREP=ggrep ;export GREP
PWD=`pwd`
WORKDIR={PWD}-worker
echo INSTALL TOOLS TO ${WORKDIR}
rm -rf ${WORKDIR}
cd srclib/apr
./configure --prefix=${WORKDIR}
gmake || exit
gmake install
echo ============================================
echo
echo Compiled apr
echo
echo ============================================
# Build and install apr-util 1.2
cd ../apr-util
./configure --prefix=${WORKDIR} --with-apr=${WORKDIR}
gmake || exit
echo ============================================
echo
echo Compiled apr-util
echo
echo ============================================
# Configure httpd
cd ../../
"./configure" \
"--prefix=/usr/apache2/2.2" \
"--enable-layout=Solaris-Apache2" \
"--enable-mods-shared=all" \
"--enable-so" \
"--enable-suexec" \
"--with-suexec-caller=webservd" \
"--with-suexec-userdir=htdocs" \
"--with-suexec-docroot=/var/www" \
"--with-suexec-uidmin=1000" \
"--with-suexec-gidmin=1000" \
"--enable-proxy" \
"--enable-proxy-connect" \
"--enable-proxy-ftp" \
"--enable-proxy-http" \
"--enable-proxy-ajp" \
"--enable-proxy-balancer" \
"--enable-cache" \
"--enable-file-cache" \
"--enable-disk-cache" \
"--enable-mem-cache" \
"--enable-deflate" \
"--enable-cgid" \
"--enable-cgi" \
"--enable-ssl" \
"--with-ssl=/usr/sfw" \
"--with-apr=srclib/apr" \
"--with-apr-util=srclib/apr-util" \
"--with-mpm=prefork" \
"CC=/opt/SUNWspro/bin/cc" \
"CFLAGS=-xO3 -xspace -Xa -xildoff -xc99=all -DSSL_EXPERIMENTAL -DSSL_ENGINE" \
"$@"
apacheをインストールする訳じゃないので、ldapに関しては削除(笑)今回はコンパイル環境を作るのが面倒だったため。
あとはBUILDスクリプトを実行し、
gmake
すれば、出来上がり。下記にsuexecがあります。
support/suexec
確認
./support/suexec -V -D AP_DOC_ROOT="/var/www" -D AP_GID_MIN=1000 -D AP_HTTPD_USER="webservd" -D AP_LOG_EXEC="/var/apache2/2.2/logs/suexec_log" -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin" -D AP_UID_MIN=1000 -D AP_USERDIR_SUFFIX="htdocs"
OKっぽいですね。
あとは/usr/apache2/2.2/binあたりにコピー。
cp support/suexec /usr/apache2/2.2/bin chmod 4711/usr/apache2/2.2/bin/suexec
こんなになります。
# ls -l /usr/apache2/2.2/bin/suexec -rws--x--x 1 root bin 18540 Oct 25 01:52 /usr/apache2/2.2/bin/suexec
apacheは念のため、リスタートします。
動作チェックは、
error_log suexec_log ssl_request_log
あたりで何とかなるはずです。
インストールしている環境に何もないと、apacheコンパイル中、止まると思います。内容をよく見て
pkg search -r ファイル名
でやれば、インストールが必要なパッケージがわかるはずです。