我使用 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 功能更强大,但也更复杂。我几乎只是使用 HTTP 方法为我想要的人提供只读访问权限,其他人都可以通过 svn+ssh 进行访问,我严格限制这些人的身份并进行大量备份。据我所知,我什至从未尝试过 svnserve 方法。