ruby – 在Capistrano 3中永久切换用户(单独授权和部署)

我们在服务器管理中有以下模式 – 所有用户都有自己的用户,但部署完全由特殊部署用户执行,没有直接登录的可能性.

我们在Capistrano 2.x中使用了这种方法

default_run_options[:shell] = "sudo -u deploy bash"

$cap stage deploy -s user=thisisme

我知道Capistrano 3.x有直接切换用户方法

task :install do
    on roles(:all) do
        as :deploy do
            execute :whoami
        end
    end
end

但是此代码将填充所有任务,并且认任务无论如何都不会继承部署用户.是否可以直接设置登录用户而无需将此代码拖到每个任务中?

解决方法

由于我没有得到正确的答案而且自己没有得到这个想法,所以我决定问作者. Capistrano 3.x使用SSHKit管理远程执行命令,and here’s their answer

您可以尝试重写命令映射,以便每个命令都以所需的sudo字符串为前缀. https://github.com/capistrano/sshkit/blob/master/README.md#the-command-map

SSHKit.config.command_map = Hash.new do |hash,command|
  hash[command] = "<<sudo stuff goes here>> #{command}"
end

文件说“这可能不明智,但有可能”.因人而异

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...