2012-05-25 6 views
7

Я не хочу использовать sudo для любых моих удаленных команд через Capistrano. В частности, когда я запускаю cap deploy:setup, меня спрашивают мой пароль sudo во время первой команды mkdir. Я добавил set :use_sudo, false в файл deploy.rb, но это не повлияло.Capistrano используя sudo даже с «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

что это '# {try_sudo}' бит? что, если вы это вынесете? – sbeam

+0

'# {try_sudo}' должен _sudoize_, если команда ': use_sudo' установлена ​​в' false'. Я включаю его в 'sudo_test', потому что задачи capistrano rails также могут использовать его, и, скорее всего, проблема возникает. –

+0

Мы используем 'sudo -i ' в нашем файле deploy.rb. – yeowzir

ответ

4

По-видимому, невозможно отключить функциональность sudo с некоторыми задачами capistrano. Предполагается, что непривилегированный пользователь на сервере не сможет выполнять определенные задачи.

Данная команда является mkdir. Я утверждаю, что непривилегированный пользователь должен иметь возможность запускать эту команду, если родительская папка - это та, для которой у них есть разрешение на это. Я также утверждаю, что пользователь может быть привилегированным пользователем, например root. Лучшая практика? Не обязательно. Да, в рамках разумного развертывания.

Вот ссылка на ответ на мой первоначальный вопрос:

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

+1

: use_sudo, false работал для меня с mkdir (с использованием deploy: setup) – vish

12

Для всех, кто работает в этот вопрос и глуп, как я. Убедитесь, что вы не указали ложь. У меня было:

set :use_sudo, "false" 

и когда я включил его в

set :use_sudo, false 

большинство вещей начали работать так, как я ожидал. Как указывает YWCA Hello, есть еще команды, которые игнорируют параметр use_sudo. Однако не забудьте установить его правильно.

+0

В качестве объяснения (без прочтения соответствующей части кода capistrano): «false» - истинное значение в ruby. Только ноль и ложь ложны. Любое другое значение, вкл. 0, "", [] считаются истинными. Таким образом, настройка: use_sudo для «false» - это то же самое, что и параметр: use_sudo - true. –