使用capistrano部署时切换用户?

时间:2011-06-30 09:51:01

标签: ruby deployment capistrano

有没有办法在使用capistrano进行部署时切换用户(到root等)而不关闭当前会话(会话是用ssh密钥启动的)?

所以我想用用户foo开始部署,然后更改为root,然后执行一些命令。

感谢您的回答!

4 个答案:

答案 0 :(得分:6)

您可以使用capistrano sudo 帮助:

task :some_task_as_root do
  run "#{sudo} some_command"
end

您甚至可以指定其他用户:

task :some_task_as_other_user do
  run "#{sudo :as => 'other_user'} some_command"
end

如果需要,sudo帮助程序将负责从您那里获取密码并正确传递密码。

答案 1 :(得分:1)

您没有说要以root身份运行命令的位置。在本地系统?在远程系统上?

capistrano中的每个“运行”命令都使用单独的新ssh连接。如上所述,“sudo”是以root身份运行一组语句的官方方式。

如果您愿意为Root提供一个ssh密钥以便能够通过ssh直接登录,那么您可以指定一个用户ssh over as。不过我不推荐它。

在没有“sudo”(叹息)的Solaris环境中,我们使用pfexec代替。

答案 2 :(得分:0)

我相信sudo就是您所需要的

答案 3 :(得分:-1)

您的用户之前应该是sudoers小组。

然后使用它:

task :specific_sudo_take do
  run 'sudo -c sh "whoami' #put your sudo command here
end