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 ファイル名
でやれば、インストールが必要なパッケージがわかるはずです。