2011-05-05 23 views
10

Estoy intentando ejecutar un script desde un servidor diferente usando sshpreservar el medio ambiente sudo

Aquí está el comando que estoy usando desde el servidor 1 para poner en marcha una consulta en el servidor 2:

ssh -t [email protected] "cd /var/www/vhosts/xxxxx/subdomains/preprod/; sudo ./replace.sh"; 

pero el problema es que cuando lo haga sudo la $home = /root mientras que el guión es bajo: /var/www/vhosts/xxxxx/subdomains/preprod/

¿Cómo puedo saber sudo para preservar el medio ambiente?

Probé sudo -P -, sudo -H, sin ningún tipo de suerte.

+1

usa el replace.sh el camino desde el que se ejecuta? De lo contrario, simplemente podría hacer sudo /var/www/vhosts/xxxxx/subdomains/preprod/replace.sh. – Tommy

+0

Gracias por tomarse el tiempo para responder a esto, funciona de esa manera. Pero estoy más interesado en saber si hay un argumento que podemos pasar a sudo para mantener la ruta actual en lugar de volver a establecerla en la raíz ... – Tarek

Respuesta

16

Eso es lo que obtuve de la página man.

sudo -E 

-E El -E (preservar el medio ambiente) opción anulará la opción env_reset en sudoers (5)). Solo está disponible cuando el comando correspondiente tiene la etiqueta SETENV o la opción setenv está establecida en sudoers (5).

+1

También probé esa opción ayer y falló :) – Tarek

+1

aparentemente modificación de la variable de entorno PATH aún puede ocurrir a pesar de -E (especialmente en Ubuntu, donde esto ocurre por defecto) como una preocupación de seguridad. Consulte http://stackoverflow.com/questions/257616/sudo-changes-path-why – rogerdpack

+1

@Tarek El uso de -E quizás esté restringido por su administrador porque las variables de entorno podrían causar daños. Aunque en ese caso, sudo debe regresar con una declaración clara que diga: "No tienes permitido usar -E". Si simplemente falla silenciosamente, tendrás un problema diferente. – TorstenS

Cuestiones relacionadas