sudo -i と ~/.pam_environment

sudo -i と ~/.pam_environment

代わりにユーザー環境変数を設定するために使用しましたが、~/.pam_environmentうまく機能します。 PAMは、私が使用するシェル、使用方法などに関係なく、すべての設定を管理します。私が見つけた問題の1つは;を使用して対話型シェルを開くときですsudo -i~/.pam_environment使用されていないようです。たとえば、ユーザーに切り替えるには、をfoo実行しますsudo -iu foo。これを行った後、/home/foo/.pam_environmentで指定された環境変数は設定されません。

sudoこのトピックに関して私が見つけたのは、生成されたプロセスにほとんどの(すべてではありませんが)環境変数を送信しないという事実です。しかし、私は以前の環境変数を維持したくありません。ちょうど変更したいユーザーを尊重したいと思います。

これを行う方法はありますか?これがデフォルトの動作ではない理由(セキュリティ?)はありますか?

答え1

sudo 環境変数は sudoers ファイルによって制御されます。 ~によるとsudoersのためのマニュアルページ。デフォルトでは、sudoersファイルではenv_resetこのオプションが有効になっているため、最小環境が設定されます。env_checkおよびオプションを使用すると、env_keep変数をホワイトリストに追加できます。また、sudoのPATHはsecure_pathオプションによって制御されます。

関連情報