仕事する前に、suExecだけやっておいた。¶
HikiのdataディレクトリはDocumentRoot以下から別のアクセス不能な場所に移動し、@data_pathを修正。
suexec対応するために、dataディレクトリ以下はすべて、suexecさせるユーザに所有者、グループも変更させた。
$ sudo chown -R hoge:fuga data
次に、Apacheのsuexecモジュールを使ってsuExecさせるために、/var/www/hoge以下に下記のようなスクリプトを置く。
(hoge.sh)
======
#!/bin/sh
user=hoge
group=fuga
exec /usr/lib/apache2/suexec $user $group index.fcgi
で、10-fastcgi.confを下記のように修正。
$ rcsdiff -r1.3 -r1.4 -u ./10-fastcgi.conf
===================================================================
RCS file: ./RCS/10-fastcgi.conf,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ./10-fastcgi.conf 2008/04/20 02:14:44 1.3
+++ ./10-fastcgi.conf 2008/04/20 04:27:52 1.4
@@ -34,7 +34,8 @@
fastcgi.server = (
".fcgi" => (
(
- "bin-path" => "/var/www/hoge/index.fcgi",
+ #"bin-path" => "/var/www/hoge/index.fcgi",
+ "bin-path" => "/var/www/hoge/hoge.sh",
"socket" => "/tmp/hoge.socket",
"min-procs" => 1,
"max-procs" => 2,
あと、Apacheだと、hikiのディレクトリ直下に、.htaccessがあるのだが、これは当然lighttpdでは使えないので、同じような設定をせなアカンことに気がついた。
suexecのラッパースクリプトも直接アクセスさせないようにするには、.htaccessなら下記の様にするが、
Options +ExecCGI
AddHandler cgi-script .cgi
DirectoryIndex hiki.cgi
<Files "hikiconf.rb">
deny from all
</Files>
<Files "hoge.sh">
deny from all
</Files>
lighttpdなら下記のようにする。
$ rcsdiff -r1.2 -r1.3 -u ./lighttpd.conf | sed 's/^/ /g'
===================================================================
RCS file: ./RCS/lighttpd.conf,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ./lighttpd.conf 2008/04/20 01:35:43 1.2
+++ ./lighttpd.conf 2008/04/20 04:37:08 1.3
@@ -50,7 +50,7 @@
# ~ is for backupfiles from vi, emacs, joe, ...
# .inc is often used for code includes which should in general not be part
# of the document-root
-url.access-deny = ( "~", ".inc" )
+url.access-deny = ( "~", ".inc", ".rb", ".sh" )
lighttpdの設定ファイルの記法にも大分なれてきた。理解してしまえば、Apacheよりも分かりやすいなぁ。