2011-06-30 72 views
3

有沒有什麼辦法可以在不關閉當前會話的情況下使用capistrano進行部署時(切換到root用戶)?(會話是使用ssh密鑰啓動的)?用capistrano部署時切換用戶?

所以我想用用戶foo開始部署,然後切換到root然後執行一些命令。

感謝您的回答!

+0

我希望這能回答你的問題:http://stackoverflow.com/questions/22054076/capistrano-3-change-ssh-options-inside-task/23569541#23569541 – activars

回答

6

可以使用Capistrano的須藤幫手:

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 

須藤幫手如果有必要,會照顧你的密碼並通過它正確。

+0

這個答案爲什麼downvoted?評論/理由會很好! – severin

+0

這就是我要找的severin - 謝謝 – Kirk

+0

不客氣! – severin

0

我相信sudo是你所需要的

1

你不說,你要運行的命令爲根。在本地系統上?在遠程系統上?

capistrano中的每個「運行」類命令都使用單獨的新的ssh連接。如上所述,「sudo」是以root身份運行一組語句的官方方式。

如果你很樂意給Root一個ssh密鑰以便能夠通過ssh直接登錄,你可以指定一個用戶ssh over。但我不會推薦它。

在沒有「sudo」(嘆息)的Solaris環境中,我們改爲使用pfexec。

-1

你的用戶應該是sudoers組之前。

然後使用它:

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

我會使用內置的'sudo'命令這個... – severin