7

我正在尝试设置 Capistrano 来进行我们的部署,但我现在偶然发现了似乎是 capistrano 用户的一个常见假设:您通过 SSH 连接到远程主机的用户将有权写入部署目录。

在这里,管理员是普通用户,只有一个区别:他们可以 sudo。一开始我以为这样就够了,因为有一些与sudo相关的配置,但似乎毕竟不是这样。

有没有解决的办法?创建一个由所有进行部署的人共享的用户不是一个可接受的解决方案。

编辑:为了清楚起见,不调用 sudo 就不会发生任何部署操作——这是检查用户是否被允许部署的网关点,它应该是一个强制检查点。

目前接受的答案不符合该标准。它通过向用户授予额外权限来绕过 sudo。无论如何,我接受它,因为我得出的结论是 Capistrano 在这方面从根本上被打破了。

4

1 回答 1

19

我假设您正在部署到 Linux 发行版。解决您的问题的最简单方法是创建一个组,例如deployers,然后添加应该有权部署到该组的每个用户。创建组并且用户在组中后,更改部署路径上的所有权和权限。

根据发行版,语法会略有不同。这是针对 ubuntu/debian 的:

创建组:

$ sudo groupadd deployers

将用户添加到组:

$ sudo usermod -a -G deployers daniel

最后一个参数是用户名。

接下来,更新部署路径的所有权:

$ sudo chown -R root:deployers /deploy/to/path/

的语法是:。在这里,我假设当前拥有该路径的用户是 root。更新到哪个用户应该拥有该目录。

最后,更改部署路径的权限:

$ sudo chmod -R 0766 /deploy/to/path/

这将允许deployers组中的用户读取和写入下面的所有文件和目录/deploy/to/path

于 2012-04-23T23:43:35.900 回答