apache-exec-custom でハマった件

サーバを引っ越したら suexec で動かしている cgi が internal error になって対処したけど、2年前にも同じ問題でハマって学習してないので、以下に対処メモを。

尚、2年前は Debian で今回は Ubuntu です。

症状

  • /var/log/apache2/error.log
[Thu Sep 18 00:02:53.244543 2014] [cgi:error] [pid 13672] [client 124.41.69.3:56647] AH01215: suexec policy violation: see suexec log for more details, referer: http://pwiki.awm.jp/~yoya/
  • /var/log/apache2/suexec.log
[2014-09-17 23:58:59]: uid: (3004/yoya) gid: (3004/yoya) cmd: index.cgi
[2014-09-17 23:58:59]: cannot get docroot information (/home/yoya)

原因

suexec を動かすのに、apache2-suexec-custom パッケージを使ってみたが、これは Userdir を public_html 以外に変えると動作しないらしい。
僕の場合は

Userdir public_html/diary

としてて、ハマった次第。

対処

試しに apache2-suexec を入れてみたら Userdir を任意に出来たので、こっちで。

  • /var/log/apache2/suexec.log
[2014-09-18 00:02:53]: uid: (3004/yoya) gid: (3004/yoya) cmd: index.cgi
[2014-09-18 00:02:53]: target uid/gid (3004/3004) mismatch with directory (3004/3000)
 or program (3004/3000)

サーバ引っ越しで gid が変わっちゃったので、それを合わせる。

% chgrp yoya ~/public_html/diary
% chgrp yoya ~/public_html/diary/index.cgi

[2014-09-18 00:03:05]: uid: (3004/yoya) gid: (3004/yoya) cmd: index.cgi

解決。

あとがき

でも、apache2-suexec-custom でわざわざ public_html 固定にしてるのは何か意味があるんだと思うけど、単純に apache2-suexec にしてしまって良かったのだろうか。