代わりにユーザー環境変数を設定するために使用しましたが、~/.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
オプションによって制御されます。