有没有办法在使用capistrano进行部署时切换用户(到root等)而不关闭当前会话(会话是用ssh密钥启动的)?
所以我想用用户foo开始部署,然后更改为root,然后执行一些命令。
感谢您的回答!
答案 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