我正在尝试设置Capistrano进行部署,但我现在偶然发现了capistrano用户的常见假设:SSH到远程主机的用户将有权写入部署目录
在这里,管理员是普通用户,只有一个区别:他们可以sudo。起初,我认为这已经足够了,因为有一些与sudo相关的配置,但似乎事实并非如此。
有解决方法吗?创建部署所有人共享的用户不是可接受的解决方案。
编辑:以使其清楚,不调用sudo就不会发生部署操作 - 这是检查用户是否被允许部署的网关点,它应该是强制检查点
目前接受的答案不符合该标准。它通过向用户授予额外权限来解决sudo问题。无论如何我都接受了,因为我得出的结论是卡皮斯特拉诺在这方面从根本上被打破了。
答案 0 :(得分: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
下面的所有文件和目录