2012-05-25 20 views
7

Nie chcę używać sudo do żadnego z moich zdalnie wykonywanych poleceń przez Capistrano. W szczególności, gdy uruchamiam cap deploy:setup, jestem proszony o podanie mojego hasła do sudo podczas pierwszej komendy mkdir. Dodałem set :use_sudo, false do mojego pliku deploy.rb, ale to nie miało znaczenia.Capistrano używając sudo nawet z "set: use_sudo, false"

Zacząłem od dość kompletnego pliku deploy.rb, ale pominąłem go, gdy zacząłem mieć problemy. Oto moja wersja minimal że nadal pokazuje use_sudo nie są przestrzegane:

# 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 

działa cap sudo_test wyniki mnie potwierdzeniu o hasło sudo. Czego tu mi brakuje (poza włosami, które już wyciągnąłem)?

Google Ustalenia

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

nitki ze ktoś ma podobny problem. W wątku nie odnotowano żadnych wniosków/rezolucji.

+0

co to jest '' {try_sudo} 'bit? co jeśli wyjmiesz? – sbeam

+0

'# {try_sudo}' powinien _udoize_ polecenia, jeśli ': use_sudo' jest ustawione na 'false'. Załączam go do 'sudo_test', ponieważ zadania na szynach capistrano również z niego korzystają i najprawdopodobniej pochodzą z tego problemu. –

+0

Używamy "sudo -i " w naszym pliku deploy.rb. – yeowzir

Odpowiedz

4

Wygląda na to, że nie można wyłączyć funkcji sudo przy niektórych zadaniach capistrano. Zakłada się, że nieuprzywilejowany użytkownik na serwerze nie powinien mieć możliwości wykonywania określonych zadań.

Komendą, o której mowa, jest mkdir. Twierdzę, że nieuprzywilejowany użytkownik powinien móc uruchomić to polecenie, jeśli folder nadrzędny jest tym, na który mają uprawnienia. Twierdzę również, że użytkownik może być w rzeczywistości uprzywilejowanym użytkownikiem, takim jak root. Najlepsze praktyki? Niekoniecznie. W granicach rozsądku dla pewnych wdrożeń, tak.

Oto link do odpowiedzi na mojego pierwotnego pytania:

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

+1

: use_sudo, false działało dla mnie z mkdir (używając deploy: setup) – vish

12

Dla każdego, kto działa w tej kwestii i jest głupcem jak ja. Upewnij się, że nie powołujesz się na fałsz. Miałem:

set :use_sudo, "false" 

i kiedy włącza go do

set :use_sudo, false 

większość rzeczy rozpoczął pracę tak, jak oczekiwano. Jak wskazuje YWCA Hello, nadal istnieją polecenia ignorujące ustawienie use_sudo. Nie zapomnij jednak ustawić go poprawnie.

+0

Jako wyjaśnienie (bez czytania odpowiedniej części kodu capistrano): "false" jest prawdziwą wartością w ruby. Tylko zero i fałsz są fałszywe - ach. Każda inna wartość, w tym. 0, "", [], są uważane za prawdziwe. Ustawienie: use_sudo na "false" jest takie samo jak ustawienie: use_sudo na true. –