如何正确设置SVN服务器权限?

如何正确设置SVN服务器权限?

我使用 Debian 7 并安装了 Subversion。

创建存储库后,我无法弄清楚要为存储库设置哪些权限和所有者。

我想要有两种类型的存储库:

1) svn/private/*- 只有一个指定用户可以读写

2) svn/public/*- 只有指定的用户组可以在这里读写

*意味着那里有多个存储库

我希望所有用户都从 Linux 系统中获取,而不是在 passwd 文件或其他文件中指定。那么如何正确设置存储库权限(谈论 Linux 权限)来实现这一目标呢?

此外,对于公共存储库,授权用户应该可以提交,并且这不会破坏存储库(因为我以前遇到过这样的问题)。

我们只讨论 svn+ssh 访问。

我在互联网上阅读了很多教程,但没有一个包含我需要的内容。

你能帮助我吗?

答案1

使用 svn+ssh 连接到 subversion 存储库只需使用存储库中文件的标准 unix 文件权限,因为用户已有效地通过 ssh 连接到远程服务器,并且只需在所述服务器上本地运行 svn 命令即可。

如果用户 x 对这些文件具有读/写权限,则用户 x 可以向该存储库提交更改。如果用户 y 没有读取/写入这些文件的权限,则用户 y 无法提交更改,或者如果他们也没有读取访问权限,则甚至无法查看(签出)存储库的内容。

在最简单的模式中,使用 chown 和 chmod 为每个用户设置存储库的所有权和权限:

$chown user:group /wherever/svn/private
$chmod 770 /wherever/svn/private

等等。

对于更复杂的权限,必须通过 http 服务器使用 svn,并使用 http 服务器的访问控制来访问存储库中的特定路径。

注意:如果用户对特定存储库具有读/写访问权限,他们可能会损坏它。因此,只要您使用 svn+ssh,您就向这些用户授予了相当大的访问权限。现在,即使在更受限制的情况下,只要用户可以对存储库提交更改,他们就可以造成损害......尽管通常这种损害可以回滚。

请稍等一下,我将链接到 SVN 文档中的相关章节。

这是svn+ssh配置部分

这是关于 HTTP 配置的部分

本书的要点是 svn+ssh 简单、安全,但有局限性,而 http 功能更强大,但也更复杂。我几乎只是使用 HTTP 方法为我想要的人提供只读访问权限,其他人都可以通过 svn+ssh 进行访问,我严格限制这些人的身份并进行大量备份。据我所知,我什至从未尝试过 svnserve 方法。

相关内容