sudo -Eが$ HOME環境変数を保存しないのはなぜですか?

sudo -Eが$ HOME環境変数を保存しないのはなぜですか?

echo $HOME私のRed Hatコンピュータで通常のユーザーアカウントを使用してコマンドを実行すると、それが得られます/home/snrub。コマンドを実行しsudo vim foo.txtてvimに入力してecho $HOMEください/root/home/snrubsudoを使用してファイルを編集しても、素晴らしいVimプラグインを解析できるように戻りたいです。 sudoのマニュアルページによると、または-Eオプションは機能するはずですが、orを-H実行すると、ホーム.vimrcファイルを解析せずに入力すると返されません。sudo -E vim foo.txtsudo -H vim foo.txtsudo -EH vim foo.txt/rootecho $HOME

また、sudoersファイルに次の行を追加して保存してみました。

Defaults   env_keep += "HOME"

それでも動作しません。 Vimを実行しsudo vim foo.txtて入力してもecho $HOME表示されます/root。同様に(厳密にVimの問題ではないことを確認するために)入力し、sudo emacs foo.txtEnterを押してからAlt-Xを入力し、getenvEnterを押してから入力してHOMEEnterを押します。それでもWill returnが表示されます/root。どのように返されますか/home/snrub

答え1

sudoセキュリティ対策として、環境変数(TERM、PATH、HOME、MAIL、SHELL、LOGNAME、USER、USERNAME、SUDO_*)のリストをデフォルトで有効なオプションにリセットしてください。 HOMEをユーザーアカウントから環境env_resetに移行するには、次の手順を実行する必要があります。sudo

  • sudo ルールで SETENV タグとオプションを使用する-Eか、

  • 特にこのenv_resetオプションの設定を解除してください。

また、このオプションがオフになっていることを確認してくださいalways_set_home(デフォルトでは)。

よりsudoers のマニュアルページすべての詳細と対話を確認してください。

関連情報