[英]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.