2009-07-26 5 views
1

私はその仕事に悩まされています。svnポストコミットフックは作業コピーディレクトリにファイルを作成する権限を持っていません

何かが変更された場合、svn post-commitフックが書かれているので、サーバ上の作業コピーが更新されるはずです。しかし、それはそのフォルダのアクセス許可を持っていないようだが、私は誰もがそこに書いたり読んだりできるように設定している。だからここ

は、テストスクリプトです:

Committed revision 51. 

Warning: 'post-commit' hook failed with error output: 
touch: cannot touch `/root/root/trunk/worked': Permission denied 

とターゲットフォルダのアクセス許可:

[[email protected] trunk]# ls -la 
total 24 
drwxrwxrwx 5 apache apache 4096 Jul 26 07:08 . 
drwxrwxrwx 6 apache apache 4096 Jul 24 02:14 .. 
-rwxrwxrwx 1 apache apache 1367 Jul 24 02:45 pom.xml 
drwxrwxrwx 4 apache apache 4096 Jul 24 02:23 src 
drwxrwxrwx 6 apache apache 4096 Jul 24 13:31 .svn 
drwxrwxrwx 7 apache apache 4096 Jul 24 11:18 target 

任意のアイデア

#!/bin/sh 
REPOS="$1" 
REV="$2" 

DIR="/root/root/trunk" 

touch $DIR/worked 

私は出力を持っていますか?

答えて

2

あなたの問題は、/ rootディレクトリのアクセス許可が、root以外の誰よりも優先され、その下にあるものにアクセスできないことが考えられます。

私のpc/rootにはパーミッションがあります。rwx ------ root:rootとは私が信じているのは、ルートとして実行可能な実行可能ファイルだけが下のものにアクセスできることを意味します。あなたは

  1. を試してみましたので、もし豊富な私のホームフォルダ/ homeは/誰のための読み取りアクセス権を持っているしかし

    ます。mkdir -p /ホーム/ myuserの/ WORKINGDIR /トランク
  2. のchmod -R 777 /ホーム/ myuserの/ WORKINGDIR
  3. のchown -R MYUSER:apacheの/ホーム/ myuserの/ WORKINGDIR

その後、私はそれがうまくいくと思うフックを試してみてください

/rootのコードをチェックアウトする理由を自分に尋ねる必要があります。あなたは、仕事を完了させるのに必要な最低限の権限を持っているユーザーとして作業する必要があります。インストールを除いて、linuxが提供する最高レベルの権限を必要とせずに作業コピーをコンパイルして編集できるはずです。

+0

そこに作成されたためです。それは理にかなっていますか? – glaz666

+0

ありがとう、それは動作します。それでもrootのサブディレクトリですべての権利が設定されているのに失敗した理由はありません – glaz666

+1

もし/ apacheに/ rootへの読み込みアクセスさえなければ、 "/ root/root/trunk/worked"が存在することをどのように知ることができますか?そのディレクトリにはそれを読む必要があります。 – Ryu

0

作業ディレクトリを作成しようとすると、あなたのWCパスに2つの/ root/rootが必要ですか?実行しようとしているコマンドは何ですか - 非常に小さく単純なフックを作成してください(例:svn exportまたはsvn co)それを試してください - 私たちにもスクリプトを投稿してください。

エラーから、まだ存在しないものを更新しようとしているようです。

+0

スクリプトは単にtouch $ DIR/workedを実行します。同じスクリプトから "touch ./worked"と同じものを呼び出すと、/ usr/local/svn/hooksに作業ファイルが作成されます。だから、コマンドでOKです。 – glaz666

0

ディレクトリがありますか?タッチはディレクトリのために働きますか?私のLinuxの力は弱いですが、ファイルのタイムスタンプを作成/更新するだけだと思いました。もしそうなら、それはあなたの問題かもしれません。

+0

私の記事を修正していただきありがとうございます:)それはとてもかわいいです '働いています'はファイルです。存在しない場合はシステムが作成し、それ以外の場合はタイムスタンプを変更します – glaz666

+0

これはフォルダに書き込む権限をテストする方法です – glaz666

関連する問題