多用户bzr服务器

MvG*_*MvG 5 ssh user-management version-control authorization bazaar

我目前正在调查是否可以在类似于 gitolite 为 git 所做的设置中为 bzr 提供服务。这意味着一个 unix 帐户,通过他们的 ssh 公钥管理不同的用户。我很乐意将其与 gitolite 集成,在这种情况下,~/.ssh/authorized_keys可以委托用户管理和创建合适的。这将处理身份验证。

让我担心的是授权。在我看来,bzr serve开箱即用只有--directory提供访问控制的标志。这适用于为每个用户提供他或她自己的一组存储库,或者用于将用户分配到组并为每个组提供一组固定的存储库。多做一点工作,一个用户可以使用一个目录,但使用符号链接允许多个用户共享访问存储库。

尽管如此,这仍然远不及gitolite所能做到的。使用这种方法,不可能授予单个用户对某些存储库的只读访问权限,但授予对其他存储库的读写访问权限。也无法防止覆盖推送或在用户目录中创建新存储库。

可能是这些功能还没有实现。在相关的 Stack Overflow 问题中,我问的是如何自己实现这一点。在服务器故障上,我专注于现有的解决方案。是否有任何现成的解决方案赋予bzr serve比简单--directory限制更细粒度的访问控制?像 gitolite 这样的完全集成的解决方案将是最有趣的,但即使是一些可能被配置为解决我提到的问题之一的扩展也会很高兴知道。

And*_*zek 2

如果您不只专注于一位用户,您可以考虑以下设置:

  • 每个用户都有自己的 UID。
  • 所有 bzr 用户的 umask 是 002。
  • 每个存储库都有一个所有者 UID 和一个唯一的写入权限组。
  • 每个存储库都有一个基于所有者 UID 树中的目录。
  • 每个存储库目录都是 sgid ( chmod g+s <repo>)。
  • 每个存储库目录都有默认的 fileacl 所有者 rwX ( setfacl -R -m d:u:UID:rwX <repo>; setfacl -R -m u:UID:rwX <repo>)。这确保所有者始终可以删除。
  • 每个目录有模式 775,每个文件有 664。
  • 共享存储库时,它会符号链接到 UID 目录,就像您提到的使用目录限制一样。
  • 授予对存储库的写访问权限时,用户将被添加到与该存储库关联的写权限组中。

因此,您可以通过“符号链接存在”控制读取访问,并通过“组中的用户”控制写入访问。如果您想为存储库实现多个主用户,您可以添加一个额外的 d:u:UID:rwX,u:UID:rwX,每个附加主用户一个。