svn提交后权限被拒绝

svn提交后权限被拒绝,svn,Svn,目前,我正在尝试设置一个post-commit钩子,该钩子自动将svn副本导出到我的www根目录,以便在提交完成后更新我的网站。 post-commit钩子如下所示: #!/bin/sh # Delete Old site rm -R /var/www/html/sha print 1 # Export Repository svn export --force file:///var/local/svn /var/www/html/sha # Make sure Apache Owns t

目前,我正在尝试设置一个post-commit钩子,该钩子自动将svn副本导出到我的www根目录,以便在提交完成后更新我的网站。 post-commit钩子如下所示:

#!/bin/sh

# Delete Old site
rm -R /var/www/html/sha
print 1
# Export Repository
svn export --force file:///var/local/svn /var/www/html/sha

# Make sure Apache Owns the website
chown -R www-data:www-data /var/www/html/sha
rm: cannot remove '/var/www/html/sha/extensions/LdapAuthentication.php': Permission denied
但是当我做一些事情时,我会遇到很多被拒绝的错误。基本上是这样的:

#!/bin/sh

# Delete Old site
rm -R /var/www/html/sha
print 1
# Export Repository
svn export --force file:///var/local/svn /var/www/html/sha

# Make sure Apache Owns the website
chown -R www-data:www-data /var/www/html/sha
rm: cannot remove '/var/www/html/sha/extensions/LdapAuthentication.php': Permission denied
所以我知道我需要设置一些新权限,但我不确定我设置了哪些权限。/var/www/html目录将www-data:www-data作为user:group

我通过svh连接到svn服务器+ssh://user@主机/回购

有什么线索吗


好了,现在好像行了。我将/var/www/html/sha目录的所有者更改为www-data:walter,并删除chown命令,因为无论如何都需要sudo。现在很有魅力。谢谢

运行钩子脚本的用户帐户需要在该路径上具有适当的权限

如果您使用Apache为您的存储库提供服务,那么运行该进程的帐户需要这些权限。如果使用svnserve,则该用户帐户需要权限


也可能是另一个进程锁定了文件或目录,阻止了删除它。

好的。我试图找到使用ps aux | grep svn运行svn服务的用户,但它没有出现。它必须运行,因为我可以使用svn。。找出哪些用户需要权限的另一种方法?如何访问存储库?如果您不使用
svn://
URL,那么我不希望svnserve正在运行。它是由inetd按需启动的吗?我使用svn+ssh://所以应该有一个svnserve。如果post-commit钩子将svn导出到目录,则权限如下:
-rw-r--r--1 www-data-walter 2034 Jan 15:08 index.php
,据我所知,所有者是walter组中的www-data。我不明白的是为什么这里的组是
walter
,因为www数据甚至不在这个组中。如果我将文件组更改为www-data,则post-commit脚本将一直运行到
chown-R www-data:www-data/var/www/html/sha
如果您使用
svn+ssh://
(这是在原始帖子中编辑的好信息),它将变得不可靠。在这种情况下,SVN服务不会持续运行-当您建立连接时,它将由
sshd
启动。正在提交的SSH用户帐户是执行钩子脚本的帐户。您需要仔细阅读,以确定在这种情况下谁在做什么(我自己还没有做过svn+ssh,所以我不能做更多的事情,只是指向文档而不冒着引导错误的风险),谢谢。我会编辑它。该网站称为
,现在作为该用户调用一个私有的svnserve进程。因此,用户应该是调用svnserve进程的walter。我仍然不明白为什么所有者是www数据,而团队是walter。你有什么线索吗?谢谢你!