suEXECの導入方法メモ
投稿日:2015年08月15日
最終更新日:
CentOSのApacheでsuEXECを使えるようにする手順のメモ書きです。これによって、CGIをユーザー権限で走らせることができます。PHPのCGIモードの場合はsuPHPのほうが楽だと思います。
手順の目次
- suEXECの設定を確認。
- suEXECを動かすディレクトリを用意する。
- バーチャルホストをゴニョゴニョしてユーザー等の設定。
詳細は以下
手順の解説
設定の確認
CentOSで、yumでApacheをインストールしてあれば、suEXECもあると思うので、次のコマンドを打ちます。
[VIM]
sudo suexec -V
[/VIM]
こんな感じの結果が表示されると思います。
[VIM]
-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”
[/VIM]
問題なのは-D AP_DOC_ROOT=”/var/www”です。この設定では、ディレクトリ/var/www以下でないと、suEXECが仕事してくれません(やらせたらもれなくエラーを吐きます)。なので、(/home/ユーザー名/public_htmlで動かしたい場合の)方策としては、
- Apacheを一旦アンインストール→Apacheを自分でコンパイルしてインストール(この時にsuEXECの動作を指定できる)。
- 無理やりごまかす。
- 諦める。
だいたいこのへんになります。Apacheをコンパイルするのは面倒なので、無理やりごまかします。
/home/ユーザー名/public_html以下で無理やりsuEXECに仕事をさせる
種明かしすると、/var/www以下にファイルが有ればとりあえずOKなので、/home/ユーザー名/public_htmlを/var/www以下にマウントしてやります。コマンドは以下(/home/ユーザー名/public_htmlは作成済みであるものとする)
[VIM]
sudo mkdir /var/www/わかりやすい適当な名前
sudo chown ユーザー名 /var/www/わかりやすい適当な名前
sudo chmod 755 /var/www/わかりやすい適当な名前
sudo mount –bind /home/ユーザー名/public_html/ /var/www/わかりやすい適当な名前/
sudo vim /etc/fstab
#以下を追記する
/home/ユーザー名/public_html /var/www/わかりやすい適当な名前 none bind 0 0
[/VIM]
とりあえずこれで、suEXECは仕事するようになると思います。
バーチャルホストの設定
バーチャルホスト側の設定を行います。バーチャルホストの設定ファイルを編集しましょう。設定例は以下
[VIM]
DocumentRoot /var/www/作成したディレクトリ名
ServerName www.example.jp
SuexecUserGroup ユーザー名 ユーザーグループ
ErrorLog /var/log/httpd/ユーザー名_example-error.log
CustomLog /var/log/httpd/ユーザー名_example-access.log
Options ExecCGI FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
[/VIM]
多分こんな感じです。足りない部分は各自補ってください(汗)
投稿者名:
Koguma