HOME / コンピュータTips / Solaris / SolarisでWikiPlus用に(Linuxに似た)のSuExecを作る

Date: 2008/10/25 |  このエントリーをはてなブックマークに追加  |  Tags: OpenSolaris, Solaris, SuExec

OpenSolaris/SolarisでWikiPlus用(Linuxに似た)のSuExecを作る

SuExecはセキュリティの関係上、定数でデータが入っているため

  • OSのポリシーに深く依存する

ことは、昨日のブログで掲載したとおり。

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 ファイル名

でやれば、インストールが必要なパッケージがわかるはずです。


コンピュータTips/Solaris

Recent Updates

ディスクの不良を確認する(iostat -EnのError等)

ディスク関係のスタックをざっくり書くと次の様になっています 例、SAS Expanderを使う場合、 例、AHCIなどを使う場合、 これらのエラーは、次の様なコマンドで知ることができます。 出力結果例 このなかで、 たとえば、SATAディスクを利用している際に負荷が上がってしまい、ディスクの応答が間に合わないシチュエーションでは、Transport Errorが一気に …
»続きを読む

2017年、新年明けまして、おめでとうございます。

日記/2017年、新年明けまして、おめでとうございます。

新年明けまして、おめでとうございます。今年もよろしくお願いします。 昨年中は、皆様にお世話になりました。 昨年は、コツコツと3年程前から行ってきた改革がある程度完成された年で、この先5年、10年を見据えて、次のフェーズへと進む為の土台が完成した年でもありました。 それにキャッチアップする形で、個々の従業員一同が、役割を自覚し、明確に動けた年であったかと考えています。 …
»続きを読む

RSA鍵認証のみにし、Password認証を無効化する

意外に覚えきれなくて、いつも忘れるので、メモついでに残しておきます。 古いOpenSSHや、SunSSHの場合は、これも無効にします。 ユーザ目線でのザックリとした説明を。OpenSSHではなく別のSSH実装も含めて考えているので、OpenSSHのソースをじっくり読んだわけではないため、間違ってたらすみません。 まず、Password認証を無効にする場合、 PasswordAut …
»続きを読む

Nexus7 2013をMarshmallow(Android 6.0)化

OTAでない方法で。 だいたい ここに書いてある方法 なんだけど、adbなどが一式使えている状態で。 まずは自分の機種のものをダウンロードする。僕のは、 Android 6.0 Marshmallow for Nexus 7 2013 Wi-Fi 。tgzを展開し、zipも解いておく。 まずはboot loaderへ。 bootloader自体のアップデート。一式、updat …
»続きを読む

OS X 10.11 El Capitanで、phpのモジュールインストール

Yosemiteからのアップデートは割と簡単です。なぜならYosemite時に、すでにapache 2.4になり、php 5.5になっているから(笑 アップデート前に、まずはphp.iniとhttpd.confをバックアップしておきましょう きになるなら、hostsとかapache以下全てをバックアップしておいてもいいかも。 後はEl Capitanにアップデートする。 アッ …
»続きを読む

EasyAcc Powerbank PB4000CB

スマフォTips/モバイルバッテリー/モバイルバッテリー製品レビュー/EasyAcc Powerbank PB4000CB

薄型のモバイルバッテリーEasyAcc Powerbank PB4000CBです。 今や、モバイルバッテリーは大型のものが好まれるのか、隙間無く商品があります。20,000mAh越えで、「でけえ!」とか言ってますけど、大きいのを探せば、100Wh(27,000mAh)、200Wh当たり前、探せば500Wh(135,000mAh)とか、もっともっとあるのです。用途がどんどん異なっていくので …
»続きを読む

EC Technology Sports Headsets S10-JWH07B

デバイスTips/Bluetooth/EC Technology Sports Headsets S10-JWH07B

Bluetoothのスポーツヘッドセット、 S10-JWH07B について。 今までブログに記載することはなかったのですが、実は割とBluetoothと言うか無線型のヘッドフォンを沢山持っています。赤外線や独自物、Bluetoothなどいくつもストックを持っていたりします。普通の人からするとマニアです。でも、マニアからみるとそうでもないレベルです。 ただ「ヘッドフォンの音質」というの …
»続きを読む

静岡県内をVPNでつなぐ(割と特殊な例)

静岡というのはある意味特殊な土地で、ほとんどのインターネットプロバイダのPOIは静岡でつながれておらず、NTT西圏内のどこかで繋がっているので、大抵大阪折り返しになる。仮に静岡県内にPOIがあっても、だいたい静岡でルーティングしてないので、やっぱり東京折り返しになってたりする。例え 同じプロバイダを使っていたとしても 。 だから静岡←→静岡のVPNは、静岡←→東京や、静岡←→大阪よりも遅 …
»続きを読む

最新  |  << 前ページ  |  次ページ >>  |  最初