CentOS上でsuEXECを動かすのに苦戦したのでまとめ Category: Linux Archive: 2011年1月

OSとかにも依存するみたいなのでよくわからないけどこれ直したら使えるようになったのでメモ。さくらのVPSにデフォルトで入っているCentOSです。ボクが設定勝手にいじったのかもしれませんがとりあえずsuEXECが動きません。具体的には、UserDirの中に

#!/usr/bin/perl --
print "Content-type:text/html¥n¥n";
print `whoami`;

を入れて動かすとpearって出てほしいのにapacheって出ます。オフィシャルに書いてあることが用語むつかしすぎて読めなくて、他のページは全部紫にして読みまくったけど解決せず。けっきょくオフィシャルに立ち返ることにしました。CentOSにはデフォルトでsuEXECが入っているので、20のセキュリティなんたらとかどうでもよくて、その下の、

起動時に、Apache は --sbindir オプションで設定されたディレクトリで suexec を探します (デフォルトは "/usr/local/apache/sbin/suexec") 。 適切に設定された suEXEC がみつかると、 エラーログに以下のメッセージが出力されます。

[notice] suEXEC mechanism enabled (wrapper: /path/to/suexec)

サーバ起動時にこのメッセージが出ない場合、 大抵はサーバが想定した場所で wrapper プログラムが見つからなかったか、 setuid root としてインストールされていないかです。

でした。ちなみにさくらVPSにデフォルトで入ってるCentOSでは --sbindir の値は /usr/sbin だと思います。エラーログ(デフォルト:/var/log/httpd/error_log)にこの記述がなければsuEXECが動いていないとのことなので、上記に該当。結果として、setudi rootされていなかった。

setuid rootってなんだ

調べた。なので、setuid rootしてやりましょう!

# cd /usr/sbin
# chmod 4711 suexec

とすると、これ実行するときは所有者権限で実行してね、ってなるらしい。所有者がrootになっているかどうかもチェック。これでsuexecの実行はsuexecの所有者=rootさん権限になる。最初の4がミソらしい。あとは

# /etc/init.d/httpd restart

でerror_logにちゃんと載ることを確認! 適当やけど俺は2日迷い続けたから同じような境遇の人には役立つと思う!!

Date: 2011/01/23 23:48 Comment(s): 3

Comments

こんばんは
有用な情報ありがとうございます。少し前に共用サーバーからさくらのVPSに移行しようと思って契約したのですが、movabletypeを運用するに当たってCGI実行権限の問題でずっと悩んでました。ファイルに触るときだけいちいち所有を変えたりとか面倒なことしてたのですが、これでうまく運用できそうです(^^)
まだこれからドメインの移管とか色々ありますけど・・・・頑張って設定してみます

参考になったようでよかったです!

  • コメント内に URI を含む場合、管理者の承認後に表示されます。