我们已经建立并运行了一个名为sasse
. 我们使用简单的 SSH 和 Git (Github) 部署策略,其中代码只是简单地pull
从 Github 帐户 :ed 到部署服务器(并刷新)。
目前,该网站的文件由sasse
服务器上的用户拥有,但具有组写入权限。这些文件位于/home/sasse/sasse
.
drwxrwxr-x 10 sasse sasse 4096 Nov 16 07:58 .
drwxr-xr-x 5 sasse sasse 4096 Nov 19 15:13 ..
-rw-rw-r-- 1 sasse sasse 45948 Nov 10 05:42 CHANGELOG.txt
-rw-rw-r-- 1 sasse sasse 925 Nov 10 05:42 COPYRIGHT.txt
...
这意味着git pull
当您在sasse
服务器上登录时它可以正常工作,但是如果我以我的个人帐户(已添加到sasse
组中的 sudo 帐户)执行此操作,则任何更改的文件都将属于我;我的主要组不是sasse
。即在拉动影响 COPYRIGHT.txt 的更改之后:
drwxrwxr-x 10 sasse sasse 4096 Nov 16 07:58 .
drwxr-xr-x 5 sasse sasse 4096 Nov 19 15:13 ..
-rw-rw-r-- 1 sasse sasse 45948 Nov 10 05:42 CHANGELOG.txt
-rw-rw-r-- 1 victor victor 925 Nov 10 05:42 COPYRIGHT.txt
这意味着chown -R sasse:sasse .
如果我想保持原来的所有权状态,我必须记住这样做——如果下次其他人能够拉动,这是必要的。他们很可能是!
需要多人可以将代码部署到我们的服务器,因此该sasse
帐户是非个人的。我不希望人们登录它,而是使用具有相关组成员资格/权限的个人帐户。
问题:
- 处理多人需要访问以在同一服务器上部署代码的情况的最佳方法是什么?
- 我们是否应该简单地允许每个人都使用该
sasse
帐户进行部署?* - 我们是否应该保持一种策略,让用户对存储库具有组访问权限(或 sudo 访问权限),但以某种方式解决权限混乱的问题?如果是这样,怎么做?我可以让 git pull “作为特定用户”吗?
- 我们是否应该简单地允许每个人都使用该
*可能通过添加公钥authorized_keys
而不是让sasse
编辑该文件本身