web-dev-qa-db-ja.com

Ubuntu上のApacheとSVN-コミット後のフックがサイレントに失敗し、コミット前のフック「PermissionDenied」

私は過去数日間、コミット後の電子メール通知をSVNサーバー(Ubuntu 9.10上のApache2でHTTP経由で実行)で機能させるのに苦労してきました。 SVNコミットは正常に機能しますが、何らかの理由でフックが適切に実行されていません。

構成設定は次のとおりです。-ユーザーは、Apache dav_svnモジュールを使用してHTTP経由でリポジトリにアクセスします(dav_svn.passwdファイルにhtpasswd経由でユーザー/パスワードを作成しました)。

dav_svn.conf:

 <Location /svn/repos>
  DAV svn
  SVNPath /home/svn/repos

  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/Apache2/dav_svn.passwd

  Require valid-user
  </Location>
  • リポジトリルート内のファイルに簡単なメッセージを書き込むコミット後のフックファイルを作成しました。

/ home/svn/repos/hooks/post-commit:

#!/bin/sh

REPOS="$1"
REV="$2"

/bin/echo 'worked' > ${REPOS}/postcommit.log

リポジトリ全体をwww-data(Apacheユーザー)が所有するように設定し、コミット後のスクリプトに755のアクセス許可を割り当てました

空の環境でwww-dataユーザーを使用してコミット後のスクリプトをテストすると、次のように機能します。

Sudo -u www-data env - /home/svn/repos/hooks/post-commit /home/svn/repos 7

しかし、クライアントマシンでコミットすると、コミットは成功しますが、コミット後のスクリプトが実行されていないようです。

また、pre-commitフックの簡単なスクリプトを実行しようとしましたが、空のpre-commitスクリプトを使用しても、エラーが発生します。

「コミットに失敗しました(詳細は次のとおりです):フックのnull標準出力を作成できません '/ home/svn/repos/hooks/pre-commit':アクセスが拒否されました」

このエラーについてGoogleで数回検索しましたが、これは、特に/ dev/nullを実行するための適切な権限を持たないApacheユーザー(www-data)の問題であると推測されます。また、ポストコミットがサイレントに失敗する理由は、stdoutでレポートされないためだと読みました。

とにかく、リポジトリ全体の所有権をApacheユーザー(www-data)に与えようとし、サーバールートでの操作を許可するようにApache仮想ホストを編集しましたが、まだ許可が拒否されています

/etc/Apache2/sites-available/primarydomain.conf

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>

任意のアイデア/提案をいただければ幸いです!ありがとう

2
user41397

そのため、これまでで最高のホスティングプロバイダーであるRailsPlaygroundの非常に役立つシステム管理者とこの問題について話し合った後、/ dev/nullの権限をに設定することで問題を修正することができました。

crw-rw-rw- 1 root   root    1,   3

そして今、すべてのSVNフックは期待どおりに機能します。

2
user41397