Capistrano甚至用“set:use_sudo,false”使用sudo

时间:2012-05-25 21:23:50

标签: ruby-on-rails-3 capistrano sudo rvm-capistrano

我不希望通过Capistrano对我的任何远程执行命令使用sudo。具体来说,当我运行cap deploy:setup时,我在第一个mkdir命令期间询问了我的sudo密码。我在我的deploy.rb文件中添加了set :use_sudo, false,但这并没有什么区别。

我从一个相当完整的deploy.rb文件开始,但在我遇到问题后将其削减。这是我的最小版本仍然显示use_sudo没有得到尊重:

# App Definitions

set :domain, '[server-ip]'
role :app, domain
role :web, domain
role :db, domain, :primary => true

set :user, "my_app"
set :use_sudo, false

task :sudo_test do
  run "#{try_sudo} whoami"
end

运行cap sudo_test会导致系统提示我输入我的sudo密码。我在这里想念的是什么(除了我已经退出的头发之外)?

Google调查结果

https://groups.google.com/forum/?fromgroups#!topic/capistrano/QNYnvW8obrg

某人遇到类似问题的帖子。线程中没有结论/解决方案。

2 个答案:

答案 0 :(得分:12)

对于遇到这个问题而且像我这样的傻瓜的其他人。确保你没有引用虚假。我有:

set :use_sudo, "false"

当我把它切换到

set :use_sudo, false

大多数事情都按照我的预期开始工作。正如YWCA Hello指出的那样,仍有命令忽略use_sudo设置。但是,不要忘记正确设置它。

答案 1 :(得分:5)

显然,无法使用某些capistrano任务禁用sudo功能。假设服务器上的非特权用户不应该执行某些任务。

有问题的命令是mkdir。我认为如果父文件夹是他们有权这样做的,那么非特权用户应该能够运行此命令。我还认为用户实际上可能是特权用户,例如root。最佳实践?不必要。在某些部署的理由范围内,是的。

以下是对原始问题的回复的链接:

https://github.com/capistrano/capistrano/issues/211#issuecomment-7667467