Capistrano 部署失败,scp: /tmp/<project_name>/git-ssh.sh: 权限被拒绝

Capistrano deploy failing with scp: /tmp/<project_name>/git-ssh.sh: Permission denied

我在这里撕破了头发。我假设部署用户,在本例中为 www-data,没有足够的权限创建必要的目录。或者这是与 SSH 相关的问题?

我正在使用 Capist运行o 3.5 部署到 Ubuntu 15.10。

这是完整的轨迹

00:00 git:wrapper
      01 mkdir -p /tmp/project_name/
    ✔ 01 www-data@88.xxx.xxx.xxxx
(Backtrace restricted to imported tasks)
cap aborted!
scp: /tmp/project_name/git-ssh.sh: Permission denied

Tasks: TOP => git:check => git:wrapper
(See full trace by running task with --trace)
The deploy has failed with an error: scp: /tmp/project_name/git-ssh.sh: Permission denied

** DEPLOY FAILED
** Refer to log/capistrano.log for details. Here are the last 20 lines:  

  INFO ---------------------------------------------------------------------------
  INFO START 2016-05-18 17:34:33 +0100 cap production deploy
  INFO ---------------------------------------------------------------------------
  INFO [a283be11] Running /usr/bin/env mkdir -p /tmp/project_name/ as www-data@88.xxx.xxx.xx
 DEBUG [a283be11] Command: /usr/bin/env mkdir -p /tmp/project_name/
  INFO [a283be11] Finished in 2.160 seconds with exit status 0 (successful).
 DEBUG Uploading /tmp/project_name/git-ssh.sh 0.0%

为 Kenster 编辑

在服务器上 运行

ls -lR /tmp/<project_name>

输出

/tmp/<project-name>:
total 4
-rwxr-xr-x 1 root root 93 May 17 22:21 git-ssh.sh

最后我只需要通过 运行

在 git-ssh.sh 文件上为我的部署用户 'www-data' 设置权限
   chown www-data /tmp/project_name/git-ssh.sh

哇,我来晚了,但我 运行 遇到了同样的问题,正在努力将一些遗留代码从 cap 2 迁移到 cap 3!

因为该文件夹位于 /tmp 目录中,所以重新启动可能会解决您的问题。但进一步看问题,改变文件所有权是一个解决方案,但简单地删除文件夹我认为可能是一个更好的解决方案。我之所以这样说,是因为 /tmp 文件夹应该被视为临时文件夹,并且可以在主机重新启动时清除。不知道文件的用途,或者理想的权限和所有权应该是什么,只需删除文件!

如果您像我一样,会进行大量部署,运行 解决每次部署的问题,同时尝试找出所有上限任务。在某些时候,我敢打赌我们都更新了我们的部署用户,但只是在我们尝试使用错误的用户集进行部署之后。这就是我们遇到权限问题的原因。