单个 SVN 存储库中的文件夹权限

单个 SVN 存储库中的文件夹权限

我们有一个大型的 SVN 存储库设置,其中包含多个文件夹,例如:

/svn
     /folder1
     /folder2
     /folder3

我们使用 SVN+SSH,并将所有人放入拥有 repo 的“svn”组中。我想让每个人都可以访问文件夹 1 和文件夹 2,但只有特定组用户可以访问文件夹 3(读写)。

有办法吗?还是我应该将 folder3 从 SVN 移出并移到其他地方?

谢谢

答案1

当您说访问时,您是指 SVN 访问 (签出 / 提交 / 等等) 吗?如果是这样,您可能需要查看 svnserve 本身的授权选项,因为它允许基于路径的授权。

你可以在这里读更多关于它的内容:

http://svnbook.red-bean.com/nightly/en/svn.serverconfig.pathbasedauthz.html

答案2

如果您可以控制 svn 服务器中的文件系统,并且该文件系统具有 ACL 功能(例如 ext3/4),则可以打开 ACL 来对 svn 树的权限进行粒度控制。

您可以通过以下方式为您的分区启用 acl:

mount partition-name -o remount,acl

或者通过编辑你的 fstab:

/dev/foo           /mount-point                   ext3    defaults,acl        1 2

然后通过以下方式更改 svn 树中的权限:

~# setfacl -R -m g:"moreprivilegegroup":rwx /path/svnbase/
~# setfacl -R -d -m g:"moreprivilegegroup":rwx /path/svnbase/
~# setfacl -R -m g:"lessprivilegegroup":rwx /path/svnbase/
~# setfacl -R -d -m g:"lessprivilegegroup":rwx /path/svnbase/
~# setfacl -R -m g:"lessprivilegegroup":r-x /path/svnbase/folder3
~# setfacl -R -d -m g:"lessprivilegegroup":r-x /path/svnbase/folder3

因此,您将拥有一个名为“moreprivilegegroup”的组,该组对整个树具有完全权限,还有一个名为“lessprivilegegroup”的组,该组对整个树具有完全权限,但限制编辑/写入文件夹 3(及其子文件夹)中的文件

目录 folder3 将存储两个组的权限,这是使用默认 unix 权限无法完成的。

将相应的用户填充到两个组中就大功告成了。

该示例并不详尽,仅作为示例。请阅读setfacl手册getfacl页以获取更多信息。

相关内容