sudoでシェルを起動したときに$ HOMEが継承されるのはなぜですか?

sudoでシェルを起動したときに$ HOMEが継承されるのはなぜですか?

Vagrant boxを設定しているのに奇妙な点が見つかりました。

root@box:~# sudo --user=vagrant bash
bash: /root/.bashrc: Permission denied
vagrant@box:~$ export
declare -x HOME="/root"

なぜここにHOME設定されていますか/root?ユーザーvagrantのホームディレクトリは次のとおりです/root

vagrant@box:~$ grep vagrant /etc/passwd
vagrant:x:1000:1000::/home/vagrant:/bin/bash

オンラインで見つけたすべての内容は、環境変数を防ぐ方法ではなく、環境変数を継承する方法について説明します。 sudoers ファイルにはenv_resetデフォルト値が含まれています。この行動を制御する他のものが何であるかわかりません。

ベストアンサー1

これは選択です。気に入らない場合、-iまたは-Hオプションを使用するか、設定を変更してください。 sudo(8) のマニュアルページには次のように表示されますHOME

または、これが指定されているか、または、-iこのオプションが設定されている場合は、ターゲットユーザーのホームディレクトリに設定されます。-Henv_resetalways_set_homesudoers-sset_homesudoers

env_resetUbuntuでは実際には効果はありません$HOME(しかし、以下を参照)。これはマニュアルページの不正確さです。バラよりランチパッドのバグ#889936

追加情報

env_reset一部の環境変数は、提供されていても維持される可能性があります。オプションを使用して変更できるコンパイル時間のデフォルト値がありますenv_keep。詳細については、sudoers(5) のマニュアルページを参照してください。sudo -Vルートの下の出力の「保存する環境変数:」にこれらの環境変数のリストを表示できます。具体的には、HOMEUbuntuにはデフォルトでリストされていますが、Debianにはリストされていません。

詳細については、次を参照してください。

おすすめ記事