2012-05-25 15 views
7

Non voglio usare sudo per nessuno dei miei comandi eseguiti in remoto via Capistrano. Nello specifico, quando eseguo cap deploy:setup, viene richiesta la mia password sudo durante il primo comando mkdir. Ho aggiunto set :use_sudo, false al mio file deploy.rb, ma questo non ha fatto la differenza.Capistrano usando sudo anche con "set: use_sudo, false"

Ho iniziato con un file deploy.rb abbastanza completo, ma l'ho ridotto quando ho iniziato ad avere problemi. Ecco la mia versione minimale che dimostra ancora use_sudo non essere rispettati:

# 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 

esecuzione cap sudo_test risultati in mi venga richiesto per la password sudo. Cosa mi manca qui (oltre ai capelli che ho già tirato fuori)?

Google risultati

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

un thread con qualcuno che ha un problema simile. Nessuna conclusione/risoluzione annotata nella discussione.

+0

cos'è il bit '# {try_sudo}'? cosa succede se lo estrai? – sbeam

+0

'# {try_sudo}' dovrebbe _sudoize_ il comando se ': use_sudo' è impostato su' false'. Lo includo in 'sudo_test' perché probabilmente anche le attività di rotaia di capistrano lo usano, ed è probabile che il problema derivi da lì. –

+0

Utilizziamo 'sudo -i ' nel nostro file deploy.rb. – yeowzir

risposta

4

Apparentemente, non è possibile disabilitare la funzionalità sudo con determinate attività capistrano. L'assunto è che l'utente non privilegiato sul server non dovrebbe essere in grado di svolgere determinate attività.

Il comando in questione è mkdir. Direi che un utente non privilegiato dovrebbe essere in grado di eseguire questo comando se la cartella principale è quella per cui hanno il permesso di farlo. Direi anche che l'utente potrebbe in effetti essere un utente privilegiato, come root. La migliore pratica? Non necessariamente. Nell'ambito della ragione per determinate distribuzioni, sì.

Ecco il link per la risposta alla mia domanda iniziale:

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

+1

: use_sudo, false ha funzionato per me con mkdir (utilizzando deploy: setup) – vish

12

Per chiunque altro che gestisce in questo problema ed è uno sciocco come me. Assicurati di non citare false. Ho avuto:

set :use_sudo, "false" 

e quando sono passato a

set :use_sudo, false 

maggior parte delle cose iniziato a lavorare come mi aspettavo. Come sottolinea YWCA Hello, ci sono ancora comandi che ignorano l'impostazione use_sudo. Tuttavia, non dimenticare di impostarlo correttamente.

+0

Come spiegazione (senza leggere la parte pertinente del codice capistrano): "false" è un valore true-ish in ruby. Solo nil e false sono false-ish. Qualsiasi altro valore, incl. 0, "", [], sono considerati veri. Quindi l'impostazione: use_sudo su "false" equivale a setting: use_sudo su true. –

Problemi correlati