多用户bzr服务器

我目前正在调查是否可以在类似于gitolite的git中使用bzr。 这意味着一个单一的Unix帐户,不同的用户通过他们的SSH公钥pipe理。 我很乐意将它与gitolite整合,在这种情况下,可以委托用户pipe理和创build合适的~/.ssh/authorized_keys 。 这将涉及身份validation。

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

尽pipe如此,这还远远less于gitolite能做的。 使用这种方法,不可能向个别用户授予对某些其他存储库的只读访问权限。 也不可能防止覆盖推送,或者在用户的目录中创build新的存储库。

可能这些function还没有实现。 在一个相关的堆栈溢出问题,我正在问自己实现这个方法。 这里关于服务器故障我正在专注于现有的解决scheme。 是否有任何现成的解决scheme,赋予bzr serve更精细的访问控制比简单的目录限制? 一个完全集成的解决scheme,如gitolite将是最有趣的,但即使一些扩展可能被configuration为解决我提到的问题之一,很高兴知道。

如果你不是只有一个用户,你可以考虑下面的设置:

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

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