我怎样才能建立在Linux上的权限,使两个用户可以更新服务器上的同一个SVN工作副本?(How ca

2019-09-02 08:38发布

我的服务器同时安装了颠覆和Apache,和Apache Web目录也是一个Subversion工作拷贝。 这样做的原因是,简单的命令svn update /server/staging将部署最新的源临时服务器。

Apache的公共网页目录: /server/staging - (这是一个SVN工作拷贝。)

我有我的服务器,“理查”和“奥斯汀”在两个用户。 他们俩是“开发商”组的成员。 我递归设置上/ server目录理查德权限:开发者,使用“须藤乔敦 - R的理查德:开发商/服务器”。

然后,我设置的权限来读,写和执行两个“理查”和“开发者群体。

因此可以肯定,“奥斯汀”现在应该能够使用svn update /server/staging命令? 然而,他尝试的时候,他得到的错误:

svn: Can't open file '/server/staging/.svn/lock': Permission denied

如果我改变递归的所有者/服务器奥斯汀:开发人员,他可以在命令就好了,但后来“理查德”不能。

我该如何解决这一问题? 我想创建一个后犯了当文件提交到自动部署临时网站挂钩,但我看不到的,要为用户的工作方式。 钩子将是:

/usr/bin/svn update /server/staging

使用相同的用户帐户为他们两个不会真的是一个可接受的解决方案,我不知道有任何的方式来运行钩为“根”里的命令。

任何帮助表示赞赏!

Answer 1:

目录设置组ID

如果目录条目setgid位设置,在该目​​录中的文件将有组所有权作为目录,而不是比群创建该文件的用户。

当多个用户需要访问某些文件此属性是有帮助的。 如果用户在设置那么setgid的属性的目录工作由任何用户在目录中创建任何文件将具有组的权限。 例如,管理员可以创建一组名为spcprj和用户凯西和马克添加到组spcprj。 该目录spcprjdir可以设定GID位设置和创建凯西和马克虽然在不同的主组可以在目录中工作,并有充分的机会在该目录中的所有文件,但仍然没有能够访问对方的主组文件。

以下命令将设置在目录中的GID位:

chmod g+s spcprjdir

目录“spcprjdir”的目录列表:

drwxrwsr-x 2 kathy spcprj 1674 Sep 17 1999 spcprjdir

“就地在组权限的执行位的S‘’使写入目录中的所有文件‘spcprjdir’属于组‘spcprj’。

编辑:来源= Linux文件和文件权限



Answer 2:

我会成立svnserve这是使用一个简单的Subversion服务器svn://协议。 所以它运行在自己的用户帐户,然后将资料库仅能由一个用户访问您可以设置这件事。 然后,该用户可以有正确的权限才能运行svn update /server/staging上的post-commit钩子。



Answer 3:

在你的svn回购,你可以找到一个“的conf目录在您设置权限。 你有3个文件有:

  • AuthZ的
  • passwd文件
  • 的svnserve.conf

你在哪些用户是哪一种类型的存取权限,每个用户或每个组的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

你会得到评价文件,解释如何设置它。



Answer 4:

我使用WebDAV - 所有SVN更新和提交是通过Apache处理,我从来没有这样的问题。



文章来源: How can I setup the permissions in Linux so that two users can update the same SVN working copy on the server?