【问题标题】:Run capistrano tasks as different user以不同用户身份运行 capistrano 任务
【发布时间】:2013-02-11 17:01:17
【问题描述】:

我是 capistrano 的新手,几天来一直在努力解决这个问题,所以非常感谢一些帮助。

我们有一个烦人的安全设置,这意味着我无法以 ssh 用户身份在远程服务器上运行 capistrano 任务。这是This problem 的更简单版本 - 似乎没有有效的答案。

编辑: 进一步深入研究,我发现我可以做类似的事情:

run "su - newuser" do |channel, stream, data|

          channel.send_data("#{password}\n")

          channel.send_data("rm -rf #{release_path}\n")

        end }

我可以使用它来覆盖默认的部署方法,并完成大部分我需要做的事情。我可以在服务器等上创建所需的目录,并以 ssh 用户的身份使用 ssh 转发从 git 中提取。这产生了我的下一个问题。我现在拥有 newuser 拥有的目录,其中包含 ssh_user 拥有的文件和目录。我确实有作为 newuser 的 sudo 权限,但不知道如何对文件进行 chmod。我试过这样的东西:

run "su - newuser" do |channel, stream, data

              channel.send_data("#{password}\n")

              channel.send_data("sudo chmod 775 #{cache_path}\n")

            end }

但一切都挂了,似乎该块是在无限循环中执行的。显然这里有很多我不明白的地方,一些指针将不胜感激——即使只是为了阅读相关内容。

【问题讨论】:

  • 所以你想以一个用户的身份连接,然后sudo su 连接到另一个用户?如果您要手动登录服务器,您会采取哪些步骤?
  • 正确 - 我不能 sudo 但我可以 su - 请参阅下面对答案的评论了解更多详细信息

标签: ruby-on-rails ruby capistrano


【解决方案1】:

https://github.com/capistrano/capistrano/wiki/2.x-DSL-Action-Invocation-Run 向您展示运行的 :shell 选项,您可以将其设置为:

run "your cmd", :shell => "su - other_user -s bash"

如果你使用预定义的任务,你最好重新定义 run 和 su 来合并 shell 选项。 这假设您的 ssh 用户无需密码即可 su。如果不使用块发送密码:

run "your cmd", :shell => "su - other_user -s bash" do |channel, stream, data|
  channel.send_data("#{other_user_password}\n")
end

【讨论】:

  • 这与我一直在尝试的那种事情非常接近,但无法开始工作。我可以 su - 对于块中的新用户,我会在数据中返回提示 su 成功的提示 - 但是我实际上不能做更多的事情 - 显然我错过了一些东西......跨度>
  • 这是问题的核心——ssh用户不在sudoers列表中
【解决方案2】:

我最终想出的解决方案是将所有现有的部署任务放在一个新的命名空间中。然后,我使用新方法调用它们运行的​​脚本,具体取决于我需要以 newuser 还是 root 身份运行它们,虽然这与 Viktor 的解决方案不完全相同,但我接受了他的回答,即使它不太有效对我来说

    def run_as(user, password, command, env)
      run "#{command}\n", :shell => "su - #{user}", :env => env do |channel, stream, data|   
        channel.send_data("#{password}\n")
      end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多