web-dev-qa-db-ja.com

ログなしでsuexecがscriptaliasに失敗する

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

出力が返されるので、このスクリプトで権限が正しく設定されていると思います。

私も何をチェックする必要がありますか?私は何を間違えましたか?

よろしくお願いします!

1
jolivier

解決策を見つけました。(同じ仮想ホスト内の)次のようなスクリプトファイルへのアクセスを許可する必要がありました。

<Directory "/srv/www">
  <Files "gitolite_suexec_wrapper.sh">
    Order allow,deny
    Allow from all
  </Files>
</Directory>

そして、その良い。

0
jolivier