2012-05-25 6 views
7

No deseo usar sudo para ninguno de mis comandos ejecutados remotamente a través de Capistrano. Específicamente, cuando ejecuto cap deploy:setup, me piden mi contraseña de sudo durante el primer comando mkdir. Agregué set :use_sudo, false a mi archivo deploy.rb, pero esto no hizo la diferencia.Capistrano usando sudo incluso con "set: use_sudo, false"

Comencé con un archivo deploy.rb bastante completo, pero lo reduje una vez que comencé a tener problemas. Aquí está mi versión mínima que todavía muestra no ser respetados 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 

corriendo cap sudo_test resultados en mí que se le solicite la contraseña sudo. ¿Qué me falta aquí (además del pelo que ya saqué)?

Los resultados de Google

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

un hilo con una persona que tiene un problema similar. Ninguna conclusión/resolución anotada en el hilo.

+0

¿qué es ese '# {try_sudo}' bit? ¿y si lo sacas? – sbeam

+0

'# {try_sudo}' debería _sudoize_ el comando si ': use_sudo' está establecido en' false'. Lo incluyo en 'sudo_test' porque las tareas de capistrano rieles probablemente también lo utilicen, y es probable que de dónde surja el problema. –

+0

Usamos 'sudo -i ' en nuestro archivo deploy.rb. – yeowzir

Respuesta

4

Aparentemente, no es posible deshabilitar la funcionalidad sudo con ciertas tareas de capistrano. La suposición es que el usuario sin privilegios en el servidor no debería poder llevar a cabo ciertas tareas.

El comando en cuestión es mkdir. Yo diría que un usuario sin privilegios debería poder ejecutar este comando si la carpeta principal es para la que tienen permiso. También diría que el usuario puede ser un usuario privilegiado, como root. ¿Mejores prácticas? No necesariamente. Dentro del ámbito de la razón para ciertas implementaciones, sí.

Aquí está el enlace a la respuesta a mi pregunta original:

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

+1

: use_sudo, false funcionó para mí con mkdir (usando deploy: setup) – vish

12

Para cualquier otra persona que se encuentra con este problema y es un tonto como yo. Asegúrate de no citar falso. Tenía:

set :use_sudo, "false" 

y cuando me cambié a

set :use_sudo, false 

mayoría de las cosas empecé a trabajar de la manera que esperaba. Como YWCA Hello señala, todavía hay comandos que ignoran la configuración use_sudo. Sin embargo, no te olvides de configurarlo correctamente.

+0

Como explicación (sin leer la parte relevante del código capistrano): "falso" es un valor verdadero en ruby. Solo cero y falso son falsos. Cualquier otro valor, incl. 0, "", [], se consideran verdaderos. Así que establecer: use_sudo en "falso" es lo mismo que establecer: use_sudo en verdadero. –

Cuestiones relacionadas