パッケージインストールされた Apache の Suexec の設定変更
パッケージインストールしたApacheのSuexecの設定を変えたいときってありますよね。
でも、出来ればソースコードからの再コンパイルは避けたい・・・
そんなときありませんか。
CentOSなどApache(httpd)は、デフォルトでインストール済みですね。
なので出来ればそのデフォルトの状態を維持したままSuexecをどうにかしたいと思う事もあるのではないでしょうか。
# /usr/sbin/suexec -V -D AP_DOC_ROOT="/var/www" -D AP_GID_MIN=100 -D AP_HTTPD_USER="apache" -D AP_LOG_EXEC="/var/log/httpd/suexec.log" -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin" -D AP_UID_MIN=500 -D AP_USERDIR_SUFFIX="public_html" |
上記の内容を変えたいときですね。
そんなこんなで比較的にリスクを少なく実現する方法です。
といっても、基本的にはソースコードはコンパルし直します。
結局それをしないで実現する方法は、パイナリをいじる以外の方法は無いと思います。
バイナリをいじるのは正常に動いているようで動いていなかったなどの不具合の発生を高めます。
そのため出来るだけその方法を使わずに、suexecの内容の書き換えを行いたいと思います。
当方の環境はCentOS 5です。
まず、インストールされているApacheのバージョンを調べます。
# /usr/sbin/apachectl -v Server version: Apache/2.0.55 Server built: May 8 2006 00:31:16 |
これでバージョンが調べられます。
Apacheのアーカイブから同じバージョンのソースを拾ってきます。
ダウンロードはこちらから
https://www.apache.org/dyn/closer.cgi/httpd/
HTTPミラーサイトを選択すると、最新版へのリンクがありますがその下のページにある
Older Releasesのアーカイブへのリンクをたどります。
すると、アーカイブリストが見られますので自分のバージョンに合ったソースをダウンロードしましょう。
僕の場合は2.0.55でした。
サーバーの適当な場所にダウンロードしたら展開をします。
# tar zxvf httpd-2.0.55.tar.gz |
展開するとhttpd-2.0.55というディレクトリが出来居ていますのでその中に入ります。
そこで希望する設定内容で、configureを実行します。
# cd httpd-2.0.55 # ./configure --prefix=/usr/local/apache --enable-suexec --with-suexec-caller=apache --with-suexec-docroot=/home --with-suexec-logfile=/var/log/httpd/suexec.log --with-suexec-userdir=public_html --with-suexec-uidmin=1000 --with-suexec-gidmin=1000 --with-suexec-userdir=public_html |
僕は上記のようなコンフィグを実行しました。
prefixは無くても問題ありませんが、誤ってインストールしたときなどに対応しやすいので既存のディレクトリにかぶらなければ何でもかまいません。
基本的にインストールは実行しませんので、安全のための設定です。
あとはsuexec以外は使わないのでapacheの設定なんかはデフォルトで。
# make # cd support # ./suexec -V -D AP_DOC_ROOT="/home" -D AP_GID_MIN=1000 -D AP_HTTPD_USER="apache" -D AP_LOG_EXEC="/var/log/httpd/suexec.log" -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin" -D AP_UID_MIN=1000 -D AP_USERDIR_SUFFIX="www" |
はい、ご希望のsuexecが出来上がりました。
ポイントは上記のところで、makeの後、make installを実行しないことです。
これを実行しますとインストールが実行されてしまいます。
もし、これが現在動いているApacheを上書きすると目も当てられないためprefixを指定しておきました。
出来上がったsuexecだけを自分の稼働中のsuexecと置き換えるだけです。
置き換える前に元々のsuexecはバックアップ取る対策はしておいてください。
# cp /usr/sbin/suexec /usr/sbin/suexec_bak # cp suexec /usr/sbin/ cp: `/usr/sbin/suexec' を上書きしてもよろしいですか(yes/no)? y |
はい、これでご希望のsuexecが出来上がりました。
これで実質apacheのコンパイルは実行しますがapache自体の上書きは実行されずsuexecだけの書き換えが出来ました。
実際セキュリティーホールとかもあるとおもいますので、旧バージョンのまま設定のみを変えるということが本当に必要かどうかを見極めてください。
ただ、既存の稼働している物を置き換えるというのは色々勇気がいると思いますのでこの方法ですと設定変えられると思うので比較的安全に書き換えることが出来ます。
関連のありそうなエントリ