sudoで任意のコマンドを使用する場合、環境変数は存在しません。たとえば、HTTP_PROXYを設定した後、wget
というコマンドは、sudo
なしで正常に動作します。しかし、私がsudo wget
と入力すると、プロキシの設定をバイパスすることはできません。SUDO使用時に環境変数を保持する方法
答えて
トリックはsudo visudo
コマンドでsudoers
ファイルに環境変数を追加し、これらの行を追加することです:
Defaults env_keep += "ftp_proxy http_proxy https_proxy no_proxy"
はArchLinux wikiから取られています。
Defaults env_keep += "http_proxy"
Defaults env_keep += "https_proxy"
Defaults env_keep += "HTTP_PROXY"
Defaults env_keep += "HTTPS_PROXY"
これはおそらく、情報漏洩とセキュリティホールを避けるための最良の選択肢です。 'sudo -E'は一回限りの効果を得るための確実な方法ですが、 – sehe
私はsudo(jhbuild)を呼び出すプロセスの問題に遭遇しました。 sudoには-Eフラグが付いているので、これは私の解決策です。 – jgomo3
'etc/sudoers'を直接決して編集しないでください。代わりに、 'sudoers'ファイルを上書きする前にあなたの編集を構文検査する' visudo'コマンドを使用してください。そうしておけば、編集中に間違えてしまっても、あなた自身をロックアウトすることはありません。 – Henning
まず、export HTTP_PROXY
する必要があります。次に、man sudo
を慎重に読んで、-E
フラグに注意する必要があります。これは動作します:ここで
$ export HTTP_PROXY=foof
$ sudo -E bash -c 'echo $HTTP_PROXY'
は、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.
偉大な唯一の問題は、-Eを許可するには –
を渡され、この "-E" のdoesn –
<パスはwgetのために>:
あなたはまた、単一の文のようにアーメドAswaniの答えで2つのenv_keep
文を組み合わせることができます。それは多変数の行のエラーを返すよう
は、Ubuntuの14のために、あなたは別々の行に指定する必要がありますこれは:
Defaults env_keep += "http_proxy https_proxy"
また、このような単一のコマンドのenv_keep
を指定することを検討する必要があります。
Defaults!/bin/[your_command] env_keep += "http_proxy https_proxy"
個別に使用できるようにする変数は、コマンドの一部にすることができます。
sudo http_proxy=$http_proxy wget "http://stackoverflow.com"
'.bashrc'ファイル(' export' clausule)で 'PATH'に追加されたmyPathの下にある' package'に対して、この回答をテストしました。そうすれば 'sudo PATH = $ PATH which package'は' sudo which package'とは違って正しい答えを見つけます。しかし、 'sudo PATH = $ PATH package'は' sudo package'(ファイルが見つかりません)より進んでいません。一方、 'sudo bash'で起動されたシェルから普通の'パッケージ 'を起動すると、拡張パスが保存され、'パッケージ 'sudoの権利(1つの石を持つ2つのハト)が与えられます。だから応答は実際にあなたが起動しているコマンドに依存しています – XavierStuvw
sudoのPATH解決策は別の問題です。誰かがこの問題を探してこの投稿を見つけたら、私はhttp://unix.stackexchange.com/questions/83191/how-to -make-sudo-preserve-path – jpj
- 1. 環境をsudoにする方法は?
- 2. PyCharmを使ってリモートPythonインタプリタの環境変数を保持する方法
- 3. os.path.expandvarsの使用時にヌル環境変数から保護する
- 4. 実行時にJenkins環境変数を設定する方法
- 5. コンパイル時にVisual Studio 2008環境変数を使用する
- 6. Ruby:環境変数をsudoスクリプトに渡しますか?
- 7. logstash:入力ホストで環境変数を使用する方法
- 8. MinGwシェルで%JAVA_HOME%環境変数を使用する方法
- 9. アイデア設定で環境変数を使用する方法
- 10. JenkinsfileでJenkins環境変数を使用する方法ステートメント
- 11. AWS Elastic Beanstalk:ebextensionsで環境変数を使用する方法は?
- 12. IISでphp.iniのシステム環境変数を使用する方法
- 13. (node.js)JSONファイルで環境変数を使用する方法
- 14. eclipse.iniで環境変数を使用する方法は?
- 15. - (ダッシュ)オプションを持つ環境変数を設定する方法
- 16. Azureクラウドスタートアップ環境変数を維持する方法
- 17. 実行時に持続するantの環境変数
- 18. WebView saveState()はJavascriptの変数/環境を保持しますか?
- 19. グローバル定数を使用して環境変数を保存する
- 20. 環境変数を使用したバッファオーバーフロー
- 21. 糸package.jsonの環境変数を使用
- 22. CircleCIの環境変数を使用
- 23. Logstash:環境変数を使用
- 24. React:環境変数を使用
- 25. 環境変数perlを使用して
- 26. Awkでの環境変数の使用方法
- 27. ファイルへのAWS環境変数の保存方法 - & '
- 28. 環境変数を動的に変更する方法
- 29. C#環境変数TickCountをHHに変換する方法:mm:ss:ms
- 30. webpack - 生産環境と開発環境に異なる変数を持たせる方法
http://superuser.com/questions/232231/how-do-i-make-sudo-preserve-my-environment-variables –
関連:[須藤とsuコマンド経由で実行しているのに、なぜ異なるPATH変数です?](http://unix.stackexchange.com/q/8646/21471)UnixのSEで-Eを作るために、アーチのための例示パックマンのためにいくつかの設定ファイルを変更している – kenorb