Apache2サーバーにgitolite3をインストールしようとしています。したがって、git:git
が所有するCGIスクリプトを実行する必要があります。これを達成するための私の構成(主に this に基づく)は次のとおりです。
<VirtualHost myserver.com>
ServerName myserver.com
ServerAlias git
SuexecUserGroup git git
ScriptAliasMatch "(?x)^/(.*/(HEAD | info/refs | objects/(info/[^/]+ | [0-9a-f]{2}/[0-9a-f]{38} | pack/pack-[0-9a-f]{40}\.(pack|idx)) | git-(upload|receive)-pack))$" \
/srv/www/gitolite_suexec_wrapper.sh/$1
</VirtualHost>
私が抱えている問題は、クエリがストリップエイリアスの正規表現に一致するたびに、クライアントが403を受け取り、Apacheエラーログ(デバッグレベルに設定)が次のように通知することです。
client denied by server configuration: /srv/www/gitolite_suexec_wrapper.sh
私のApache2サーバーにはユーザーwwwrunとグループwwwがあります。 suexecモジュールが実行されているので、次のようにすべてが正常にテストされます。
su -c "/usr/sbin/suexec2 true" wwwrun
suexec policy violation: see suexec log for more details
したがって、このユーザーはsuexecを開始できます。以前は/srv/www/gitolite_suexec_wrapper.sh
に間違った権限があり、/var/log/Apache2/suexec.log
に行がログインしていましたが、現在は何もないので、suexecとラッピングスクリプトに関して権限が正しく設定されていると思います。
また、このスクリプトをwwwrun:www
またはgit:git
のどちらが所有するのか、Apache2を実行する必要があるスクリプトの所有者であるかどうかはまだわかりません。 suexec help から、wwwrun:www
である必要があると思いますが、とにかく両方を試しましたが、両方とも機能しませんでした。
su -c "/srv/www/gitolite_suexec_wrapper.sh" wwwrun
出力が返されるので、このスクリプトで権限が正しく設定されていると思います。
私も何をチェックする必要がありますか?私は何を間違えましたか?
よろしくお願いします!
解決策を見つけました。(同じ仮想ホスト内の)次のようなスクリプトファイルへのアクセスを許可する必要がありました。
<Directory "/srv/www">
<Files "gitolite_suexec_wrapper.sh">
Order allow,deny
Allow from all
</Files>
</Directory>
そして、その良い。