[英]How can I setup the permissions in Linux so that two users can update the same SVN working copy on the server?
我的服務器安裝了Subversion和Apache,Apache web目錄也是Subversion工作副本。 原因是簡單的命令svn update /server/staging
將最新的源部署到登台服務器。
Apache公共Web目錄: /server/staging
- (這是SVN工作副本。)
我的服務器上有兩個用戶,'richard'和'austin'。 他們都是'開發者'小組的成員。 我遞歸地將/ server目錄的權限設置為richard:開發人員,使用“sudo chown -R richard:developers / server”。
然后,我為'richard'和'developers'組設置了讀,寫和執行權限。
那么'奧斯汀'現在應該可以使用svn update /server/staging
命令嗎? 但是,當他嘗試時,他得到錯誤:
svn: Can't open file '/server/staging/.svn/lock': Permission denied
如果我遞歸地將/ server的所有者更改為austin:開發人員,他可以正常運行命令,但是'richard'不能。
我該如何解決這個問題? 我想創建一個提交后掛鈎,以便在提交文件時自動部署登台站點,但我看不到這種方法可以為兩個用戶工作。 鈎子將是:
/usr/bin/svn update /server/staging
對它們使用相同的用戶帳戶實際上並不是一個可接受的解決方案,我不知道有什么方法可以在鈎子里面運行命令“root”。
任何幫助表示贊賞!
目錄集組ID
如果設置了目錄條目上的setgid位,則該目錄中的文件將具有組所有權作為目錄,而不是創建該文件的用戶組。
當多個用戶需要訪問某些文件時,此屬性很有用。 如果用戶在設置了setgid屬性的目錄中工作,則任何用戶在目錄中創建的任何文件都將具有該組的權限。 例如,管理員可以創建一個名為spcprj的組,並將用戶Kathy和Mark添加到組spcprj中。 可以使用設置的GID位和Kathy和Mark創建目錄spcprjdir,盡管在不同的主組中可以在目錄中工作並且可以完全訪問該目錄中的所有文件,但仍然無法訪問彼此主要組中的文件。
以下命令將在目錄上設置GID位:
chmod g+s spcprjdir
目錄“spcprjdir”的目錄列表:
drwxrwsr-x 2 kathy spcprj 1674 Sep 17 1999 spcprjdir
代替組權限中的執行位的“s”導致寫入目錄“spcprjdir”的所有文件屬於“spcprj”組。
編輯:source = Linux文件和文件權限
我將使用svn://
協議設置svnserve
,這是一個簡單的Subversion服務器。 您可以對其進行設置,使其在自己的用戶帳戶下運行,然后只有該用戶才能訪問該存儲庫。 然后,此用戶可以具有在提交后掛鈎上運行svn update /server/staging
的正確權限。
在你的svn repo中,你可以找到一個設置權限的'conf'目錄。 那里有3個文件:
您在authz文件中設置了哪些用戶具有哪種訪問權限,每個用戶或每個組。 你在那里設置組,SVN組不是linux用戶組(哈希線是注釋):
[groups]
# harry_and_sally = harry,sally
projectgroup = richard,austin
# [/foo/bar]
# harry = rw -- user harry has read/write access
# * = -- everybody have no access
# [repository:/baz/fuz]
# @harry_and_sally = rw -- harry_and_sally group members have read/write access
# * = r -- everyone has read access
[/server/staging]
@projectgroup = rw
* = r
解決此示例並設置您的配置。 在'passwd'文件中設置用戶密碼。 執行
cat passwd
你會得到評論文件,解釋如何設置它。
我使用WebDAV - 所有SVN更新和提交都是通過apache處理的,我從來沒有遇到過這樣的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.