2009-07-26 112 views
1

我被這個任務困住了。svn post-commit hook沒有權限在工作副本目錄中創建文件

我寫了svn後提交鉤子,應該更新服務器上的工作副本,如果事情發生了變化。但似乎它沒有該文件夾的權限,但我已經設置它們允許每個人都在那裏寫和讀。

因此,這裏的測試腳本:

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

DIR="/root/root/trunk" 

touch $DIR/worked 

我已經得到了輸出:

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 

任何想法?

回答

2

我認爲你的問題可能是/ root目錄權限覆蓋任何人,除了root用戶訪問它下面的任何東西。

在我的電腦/根有權限的rwx ------根:根,我相信意味着只有可執行以root身份運行下可以訪問任何東西。

但是我的主文件夾的/ home /富,所以如果你試圖

  1. 已經閱讀任何人訪問的mkdir -p /家/ myuser的/工作目錄/後備箱
  2. 搭配chmod -R 777 /家/ myuser的/工作目錄
  3. 喬敦 - R的myuser的:阿帕奇/家/ myuser的/工作目錄

然後嘗試掛鉤,我認爲它會工作

您需要問自己爲什麼要在/ root中籤出代碼。您應該始終以具有完成工作所必需的最低權限的用戶身份工作。除了安裝,你應該能夠編譯和編輯你的工作副本,而不需要linux提供的最高級別的權限。

+0

因爲它是在那裏創建的。是否有意義? – glaz666 2009-07-26 13:33:33

+0

謝謝,這是有效的。仍然不明白爲什麼它的所有權限設置的根目錄子目錄失敗 – glaz666 2009-07-26 19:13:38

+1

如果Apache甚至沒有對/ root的讀取權限,那麼它如何知道「/ root/root/trunk/worked」存在,因爲找到該目錄存在將需要閱讀它。 – Ryu 2009-07-26 20:12:03

0

嘗試創建工作目錄,你確定你需要兩個/ root/root用於你的WC路徑,以及你試圖運行什麼命令 - 創建一個非常小的簡單鉤子(例如,只是svn export或svn co)並嘗試 - 發佈我們的腳本。

從錯誤,它看起來像你試圖更新一些不存在的東西。

0

工作目錄? Touch是否適用於目錄?我的linux能力很弱,但我認爲這只是爲了創建/更新文件的時間戳。如果是這樣,那可能是你的問題。