Capistrano使用sudo执行命令,尽管它已关闭

时间:2014-02-28 09:19:52

标签: ruby-on-rails ruby linux unix capistrano

我在启用了capistrano的项目中有以下deploy.rb

# config valid only for Capistrano 3.1
lock '3.1.0'

# Default value for :pty is false
# forward password prompts
set :pty, true

set :use_sudo, false

namespace :setup do

  desc 'installs required libraries'
  task :libraries do

    on roles(:app), in: :sequence do
      execute :sudo, 'whoami'
      execute :sudo, "apt-get install mplayer"
    end
  end
end

我可能没有真正理解:use_sudoexecute :sudo, 'command'部分的概念,但奇怪的是whoami返回root,即使:use_sudo已关闭。

Documentation of v.2也说明了这一点:

  

set:use_sudo,false。默认情况下,Capistrano将尝试使用sudo执行某些操作(设置服务器,重新启动应用程序等)。如果您在共享主机上,则可能无法使用sudo,或者您可能只是想避免使用sudo。

那么无论如何执行sudo的:use_sudo标志是什么。

1 个答案:

答案 0 :(得分:2)

你在sudo中明确地运行了一个命令:execute :sudo, 'whoami',你为什么对使用sudo感到惊讶?

正如您引用的文档中所述,将:use_sudo选项设置为false将告诉Capistrano在执行某些操作时不使用sudo 。如果你执行sudo whoami虽然它不会修改你的命令。