如何在Linux中设置权限,以便两个用户可以在服务器上更新相同的SVN工作副本?

我的服务器安装了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 Files and File Permissions

转载注明原文:如何在Linux中设置权限,以便两个用户可以在服务器上更新相同的SVN工作副本? - 代码日志