我不希望通过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
某人遇到类似问题的帖子。线程中没有结论/解决方案。
答案 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