7

我不希望将 sudo 用于通过 Capistrano 远程执行的任何命令。具体来说,当我运行时cap deploy:setup,我在第一个mkdir命令期间被要求输入我的 sudo 密码。我添加set :use_sudo, false到了 deploy.rb 文件中,但这并没有什么不同。

我从一个相当完整的 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 密码。我在这里缺少什么(除了我已经拔掉的头发)?

谷歌调查结果

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

与有类似问题的人的线程。线程中没有任何结论/解决方案。

4

2 回答 2

12

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

set :use_sudo, "false"

当我把它切换到

set :use_sudo, false

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

于 2013-03-08T23:32:14.100 回答
5

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

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

这是对我原始问题的回复的链接:

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

于 2012-08-13T16:53:30.693 回答