SVN 提交后用户权限

SVN 提交后用户权限

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

我正在尝试使用提交后脚本来更新我的网站的暂存版本。

#!/bin/sh

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

如果我以用户“derek”身份登录命令行运行该命令,那么一切正常

但是当它作为提交后运行时我的日志文件中出现以下错误:

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

好的,所以我意识到这里发生的事情是调用提交后脚本的用户不是“derek”,所以它没有权限。

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

svnserve 守护进程以 derek 的身份运行...我认为这意味着提交后命令也将被称为 derek,但似乎并非如此。

任何想法我如何才能找出用户正在调用它

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

更新:我刚刚发现 www-data 似乎是调用该脚本的用户。现在 www-data 自然无法运行 svn 命令。

答案1

who am i >> /var/log/svn/example.log将输出该命令在哪个用户下运行。

答案2

嗯。钩子以 svnserve 所用的用户身份运行。

http://svnbook.red-bean.com/en/1.5/svn.reposadmin.create.html#svn.reposadmin.create.hooks

Subversion 以拥有访问 Subversion 存储库的进程的同一用户身份执行钩子。在大多数情况下,存储库是通过 Subversion 服务器访问的,因此此用户与系统上运行服务器的用户是同一个用户

答案3

我让它工作了。我不得不自己写 C 程序,但它工作了!

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

相关内容