SVN提交后用户权限

时间:2010-10-07 15:39:08

标签: svn permissions debian

我有一个debian网络服务器,上面运行了subversion。

我正在尝试使用post-commit脚本来更新我的网站的暂存版本。

#!/bin/sh

/usr/bin/svn update /home/sites/example.com/www >> /var/log/svn/example.log 2>&1

如果我从用户'derek'登录的命令行运行该命令,那么一切正常

但是当它作为post-commit运行时,我的日志文件中出现以下错误:

svn: Can't open file '/home/sites/example.com/www/.svn/lock': Permission denied

好的,所以我意识到这里发生的事情是调用post-commit脚本的用户不是'derek'所以它没有权限。

所以我的问题是用户调用后提交脚本。

svnserve守护程序以derek的形式运行...我认为这意味着post-commit命令也会被称为derek,但似乎没有。

我可以找出用户如何调用它的任何想法

其次,允许该用户访问的最佳实践方法是什么?我不认为将它添加到组中会有所帮助,因为该组默认情况下没有.svn目录的写访问权。

更新

我发现调用post-commit脚本的用户实际上是www-data。所以现在我该如何解决这个问题。

3 个答案:

答案 0 :(得分:0)

更新Oct8:对不起,我第一次没有得到正确的问题。这是正确的答案。

据我所知,你试图通过http(s)访问svn,这不需要svnserve。 Svnserve用于svn的专有协议(即svn或svn + ssh)。因此,当您通过http(s)访问svn时,它将作为webuser运行该进程。您可以通过执行'echo $ USER>来验证这一点post提交脚本中的/ tmp / svn_post_ci_user'。要解决此问题,只需将/home/sites/example.com/www中的工作副本签出为webuser。

旧更新:我认为不是试图找到用户,而是可以在svn update命令中包含--username derek,它可以解决您的问题。

答案 1 :(得分:0)

因此,这是用户之间共享写入的权限问题

  • 创建一个包含您和www-data
  • 的组
  • chgrp该工作副本
  • 授予对工作副本的组写访问权
  • 确保umask和www-data为002,以便每个创建的文件都可以分组写入

答案 2 :(得分:0)

我得到了它的工作。我必须编写自己的c程序,但它有效!

感谢我在此处找到的信息:http://forum.webfaction.com/viewtopic.php?pid=216#p216

相关问题