Quando uso qualsiasi comando con sudo le variabili ambientali non ci sono. Ad esempio, dopo aver impostato HTTP_PROXY il comando wget
funziona correttamente senza sudo
. Tuttavia se digito sudo wget
dice che non può ignorare l'impostazione del proxy.Come mantenere le variabili d'ambiente quando si utilizza SUDO
risposta
Il trucco è quello di aggiungere variabili di ambiente per sudoers
file tramite sudo visudo
di comando e aggiungere queste righe:
Defaults env_keep += "ftp_proxy http_proxy https_proxy no_proxy"
preso da ArchLinux wiki.
Per Ubuntu 14, è necessario specificare in linee separate in quanto restituisce gli errori per le linee a più variabili:
Defaults env_keep += "http_proxy"
Defaults env_keep += "https_proxy"
Defaults env_keep += "HTTP_PROXY"
Defaults env_keep += "HTTPS_PROXY"
Questa è probabilmente l'opzione migliore, per evitare fughe di informazioni e falle di sicurezza. 'sudo -E' è il modo infallibile di ottenere lo stesso effetto per una tantum, anche se – sehe
ho riscontrato il problema di un processo che è quello che chiama sudo (jhbuild) e non posso dirlo per passare il flag -E su sudo, quindi questa è la mia soluzione. – jgomo3
Si noti che non si dovrebbe * mai * modificare direttamente 'etc/sudoers'. Invece, usa il comando 'visudo', che controlla le tue modifiche prima di sovrascrivere il file' sudoers'. In questo modo, non ti blocchi se commetti un errore durante la modifica. – Henning
Per prima cosa è necessario export HTTP_PROXY
. In secondo luogo, è necessario leggere attentamente man sudo
e prestare attenzione al flag -E
. Questo funziona:
$ export HTTP_PROXY=foof
$ sudo -E bash -c 'echo $HTTP_PROXY'
Ecco la citazione dalla pagina man:
-E, --preserve-env
Indicates to the security policy that the user wishes to reserve their
existing environment variables. The security policy may eturn an error
if the user does not have permission to preserve the environment.
grande l'unico problema che è modificare alcuni file di configurazione, ad esempio pacman per arch per rendere -E viene passato –
Per consentire -E (preservare l'ambiente) per wget, è necessario specificare il tag SETENV sulla regola sudo che consente l'esecuzione di wget - Esempio:
Questo "-E" non funziona se la variabile è PATH o PYTHONPATH. – apporc
È inoltre possibile combinare le due env_keep
dichiarazioni in risposta di Ahmed Aswani in una singola istruzione come questo:
Defaults env_keep += "http_proxy https_proxy"
Si dovrebbe anche prendere in considerazione specificando env_keep
per un solo comando come questo:
Defaults!/bin/[your_command] env_keep += "http_proxy https_proxy"
Per le singole variabili che si desidera rendere disponibili su base singola, è possibile renderle parte del comando.
sudo http_proxy=$http_proxy wget "http://stackoverflow.com"
Ho testato questa risposta per un 'pacchetto' sotto qualche myPath aggiunto a' PATH' nel file '.bashrc' (con clausola 'export'). Quindi 'sudo PATH = $ PATH quale pacchetto' trova la risposta giusta, diversamente da' sudo quale pacchetto'. Tuttavia, 'sudo PATH = $ PATH pacchetto' non va oltre al' pacchetto sudo' (file non trovato). D'altra parte, lanciando un semplice 'pacchetto' da una shell invocata con' sudo bash' conserva il percorso esteso e fornisce i diritti sudo 'package' (due piccioni con una fava). Quindi la risposta dipende davvero da quali comandi si sta avviando la risoluzione del PERCORSO – XavierStuvw
per sudo è un'altra questione: se qualcuno trova questo post in cerca di tale argomento, suggerisco di vedere http://unix.stackexchange.com/questions/83191/how-to -fare-sudo-preserve-path – jpj
- 1. Comando non trovato quando si utilizza sudo
- 2. Errori di installazione di RubyGems sia quando si utilizza 'sudo' che non si utilizza sudo
- 3. comando non trovato quando si utilizza sudo ulimit
- 4. le variabili globali sono nulle quando si utilizza PHPUnit
- 5. Come mantenere le richieste utente sullo stesso server quando si utilizza IIS NLB?
- 6. Come mantenere segrete le chiavi API quando si utilizza il lato client Javascript?
- 7. come mantenere le schede quando si incolla in Vim
- 8. Come mantenere l'altezza di salto uguale quando si utilizza il tempo delta?
- 9. Problema di variabili macro quando si utilizza la chiamata execute
- 10. Come ottenere refreshToken quando si utilizza GoogleAuthUtil
- 11. Quando si utilizza CFRelease?
- 12. quando si utilizza knitr
- 13. Come evitare le funzioni annidate quando si utilizza AJAX?
- 14. Servire le immagini quando si utilizza Couchbase come app server?
- 15. Come gestire le eccezioni in OnNext quando si utilizza ObserveOn?
- 16. Come si eseguono le migrazioni del database Django quando si utilizza Docker-Compose?
- 17. Dove mettere le variabili di ambiente quando si utilizza nginx e passeggeri su Ubuntu
- 18. Le migliori pratiche quando si definiscono le variabili di istanza
- 19. Come mantenere un campo fisso in un formulare quando si utilizza il riempimento automatico?
- 20. Quando si utilizza ANTLR
- 21. come mantenere i cookie e le sessioni variabili con jsoup?
- 22. Come mantenere l'ordine per gli attributi nidificati quando si utilizza accepts_nested_attributes_for in un'applicazione Rails
- 23. Come implementare SQLCipher quando si utilizza SQLiteOpenHelper
- 24. Come mantenere/escludere un particolare percorso del pacchetto quando si utilizza proguard?
- 25. Come mantenere DB in sincrono quando si utilizza l'architettura dei microservizi?
- 26. Come evitare "Autorizzazione negata" quando si utilizza pip con virtualenv
- 27. Devo eseguire sudo quando si esegue pip/easy_install?
- 28. Citazioni quando si utilizza grep?
- 29. Problema quando si utilizza MFMailComposeViewController
- 30. Larghezza come variabile quando si utilizza fscanf
http://superuser.com/questions/232231/how-do-i-make-sudo-preserve-my-environment-variables –
correlati: [Perché sono variabili strada diversa quando si esegue tramite sudo e su ?] (http://unix.stackexchange.com/q/8646/21471) a Unix SE – kenorb