如何与多个用户共享实时 BZR 存储库?

如何与多个用户共享实时 BZR 存储库?

我不确定如何最好地提出这个问题。几年来,我已经陷入困境,需要弄清楚一些事情。到目前为止,我几乎肯定没有遵循最佳实践,但就是这样。

我在自己的 Linux(Ubuntu)服务器上创建并托管 Django 网站。我使用 Bazaar 管理它们的版本控制并通过 SSH+BZR 上传。它们都进入一个想象中的父目录/websites/。生产副本只是主 BZR 分支(不是导出)。我没有运行任何类型的 FTP 服务器,只有 SSH。

我的工作流程是编辑网站的本地副本,提交更改。因为它们都是绑定分支,所以提交会自动推送到服务器,并且有一个钩子,然后运行更新,进而决定是否需要重新加载 Django 网站。我只是编写了脚本,所以它们对我来说很有效。

所有网站的文件均归我的用户帐户所有oli。目前所有网站跑步也在该帐户下。

偶尔会有客户想要访问他们的网站,这很公平,但我不确定在当前结构下我是否可以做到这一点。我认为需要做出一些改变,以便让我实现以下目标:

  • 我可以为客户创建一个新的用户帐户,以便他们可以登录并使用他们的网站(并且只信任他们的网站)。我确实信任我的客户,但我的其他客户不应该被置于强迫他们相互信任的境地。

  • 我仍然可以像使用自己的帐户一样在所有网站上工作,最好是在一个地方,但如果服务器上的网站根据用户进行划分,我就可以生存下来。

  • 如果可能的话,强制用户通过 BZR,这样他们就不会因为无法轻松回滚的愚蠢操作而弄乱生产分支。你知道这是怎么回事:如果我给客户访问权限,而某些东西“神秘地”停止工作,无论发生了什么,这都是我的错。我需要能够跟踪正在发生的事情,但同样,客户也需要能够在没有我交互的情况下进行更改(守门人 VCS 模型对我来说不起作用)。

假设我能做任何事情来改变我目前的设置,做到这一点的最好方法是什么?


我目前的想法是:

  • 安装一个简单的 FTP(等)服务器,以oli保留任何权限并尝试强制它们使用 BZR,但否则需要同步更新。

    如果您认为这是可行的,那么是否存在与 FTP 相当的安全方式,系统将其视为一个用户,但同样我可以任意限制到某些目录(例如,用户客户端 a 只能查看网站目录的子集)。

  • 彻底改变它,使用不同的 SSH 登录名,将网站保留在客户端$HOME目录中。如果这得到了你的投票,我最好的策略是什么,可以阻止他们做任何事情,除了访问他们的文件?有没有一个好的组合来限制ForceCommand internal-sftpchroot 机制?

但我在乱改东西的过程中养成了坏习惯。如何做这个?

答案1

我会将每个目录的组所有者更改为每个相应客户端的组(并在目录上设置粘性位,以便新文件继承该 gid ),并为他们提供一个仅具有 bzr+ssh 访问权限的帐户,然后让他们使用 bzr 查看他们的网站并像您一样对其进行操作。显然,将您自己添加到所有客户组中。

相关内容