2012-06-25 14 views
0

我有一個小型的NAS服務器(QNAP TS-210),配有有限的Linux板載。我在本地SVN守護進程中運行鉤子時遇到問題。如果我直接從命令行運行它們,一切正常。如果SVN試圖將它們作爲鉤子運行,或者它們被添加到crontab然後CRON試圖運行它們,則兩者都會失敗。SVN:強制svn守護進程在不同的用戶下運行

我被告知這是由於運行這些腳本/鉤子的用戶之間的差異。我通過SSH以「admin」身份登錄到我的NAS,並假定CRON和SVN都在「root」下運行。似乎根沒有足夠的目標文件夾權限(我使用SVN post-commit-hook將存儲庫導出到某個本地文件夾)或運行SVN/CRON(即使SVN/CRON在pre-revprop更改掛鉤時也失敗僅包含exit 0,所以我認爲SVN根本無法運行鉤子)。或者,也許這是不同的?

編輯:如何強制SVN在「admin」下運行,或者如何設置足夠的「root」權限,因此它可以像我一樣可以運行SVN鉤子(「admin」)?

編輯:我的鉤子腳本是/share/Sys/svn/tools_and_examples/hooks所以,呼籲

ls -lh /share/Sys/svn/tools_and_examples/hooks 

結果如下:

-rwxrwx--x 1 trejder everyone  147 Jun 24 14:33 post-commit.cron* 
-rw-rw---- 1 admin administ  1.9k Jun 25 12:20 post-commit.tmpl 
-rw-rw---- 1 admin administ  1.6k Jun 25 12:20 post-lock.tmpl 
-rw-rw---- 1 admin administ  2.2k Jun 25 12:20 post-revprop-change.tmpl 
-rw-rw---- 1 admin administ  1.5k Jun 25 12:20 post-unlock.tmpl 
-rw-rw---- 1 admin administ  3.3k Jun 25 12:20 pre-commit.tmpl 
-rw-rw---- 1 admin administ  2.4k Jun 25 12:20 pre-lock.tmpl 
-rw-rw---- 1 admin administ  6 Jun 25 12:29 pre-revprop-change 
-rw-rw---- 1 admin administ  2.1k Jun 25 12:20 pre-unlock.tmpl 
-rw-rw---- 1 admin administ  2.7k Jun 25 12:20 start-commit.tmpl 

ls -lh /share/Sys/svn/tools_and_examples/hooks/post-commit.cron gaves我:

-rwxrwx--x 1 trejder everyone  147 Jun 24 14:33 /share/Sys/svn/tools_and_examples/hooks/post-commit.cron* 

希望,這將有所幫助。

回答

1

爲一個cron正在啓動的管理,而不是編輯

/etc/crontab 

你應該使用

crontab -e 

以admin身份登錄,並把要由管理員發起與任何命令/腳本它自己的crontab。如果我沒有錯,它應該以「管理員」用戶身份啓動它。

+0

不。這不是純粹的Linux,只是一個特定的系統(QNAP的網絡連接存儲TS-210)。 Linux上的內核非常有限,有時候很奇怪。例如,我總是編輯/ etc/config/crontab(忽略crontab的其他位置),以管理員身份登錄,並且在重新啓動crond之前必須調用特定腳本來「記住」我放置的所有內容。沒有這個,我對crontab的更改將被覆蓋,並在下次系統重新啓動時被遺忘。奇怪的事情,不會發生在普通的Linux上(我想),這是一個清楚的例子,我奇怪的Linux在那裏處理。 – trejder

+0

在我的「我的」crontab(/ etc/config/crontab)中,我也可以把「admin」作爲額外的字段,強制CRON在特定的用戶下運行特定的工作。但這也不會改變一件事情。儘管腳本由CRON作爲管理員運行,但此腳本中的svn export命令並不是,儘管根本沒有調用。所以我需要確定,如何強制svn守護進程在「admin」下運行,或者如何添加當前用戶的更多權限。 – trejder

+0

只是一個小的通知。如果我使用'crontab -e',那麼我正在編輯同一個文件 - 即存儲在我的NAS設備上/ etc/config/crontab中的文件。 – trejder