Nacky - Snowland.net

Nacky(Issei Ishii)がDJ/Composerのようなふりして書き散らすblogサイト

Info

Nacky - Snowland.net - blogを移転しました

2010-01-14

yumで入れたapache+suexecのdocroot問題

■状況
CentOS使用
メンテの都合上apacheはデフォルトのまんま,yumで.
suexecの示してるディレクトリが/var/www なので,他のディレクトリ(/home/hoge/webとする)で動かしてるvirtualhostに対してsuexecが使えない.

■症状
cgi実行時,エラーログに
・Premature end of script headers
・suexec policy violation: see suexec log for more details
が出てる.
suexecのログには
・command not in docroot
が出てる.

■原因
suexecのdocrootが/var/wwwになっているので,その下のディレクトリじゃないとsuexecで実行させてもらえない.
(mod_userdirのときは別っぽい?)
/usr/sbin/suexec -Vしてみると
-D AP_DOC_ROOT="/var/www"
ということで,確かに/var/wwwになってる.

■対応法その1
suexecを再コンパイルすることなくCGI実行可能なトップディレクトリを変更する方法 » fanta-orange
これすげぇぇぇぇ!(suexecのバイナリ内で/var/wwwになってるところを書き換える)
と思ったが,suexecが書き換わったら再度やるのよね…ということで今回はパス.

■対応法その2
特定の VirtualHost でのみ SuEXEC したい - ふしぎなぼうし
こちらは/var/www以下の適当な場所に/home/hoge/webをmountする方法.
# mkdir /var/www/mnt/hoge/web
# mount --bind /home/hoge/web /var/www/mnt/hoge/web
httpd.confのDocumentRootも/var/www/mnt/hoge/webに変えてやる.
reloadして完了.
しかしこれはこれで/var/wwwの下に行っちゃっうので/homeのつもりで使ってると不具合あり(パーミッションとか).
使えるかどうかはシチュエーション次第だなぁ.
/home をbindしたほうが良かったかも?


posted at 19:43:12 on 2010-01-14 by nacky - Category: Com/Tech

ソニーストア

TrackBack

Comments

No comments yet