web-dev-qa-db-ja.com

Linux、Sudo envには環境変数がありませんが、rootユーザーには環境変数があります

RHEL 7を使用していて、Sudoの環境変数を設定したいと思います。

Rootユーザーに切り替えるためにSudo suを実行し、その.bashrcファイルにexportを追加しました。次に、それらをsourceでリロードしました。

envrootモードで実行すると、環境変数があります。ただし、終了してSudo envを実行すると、実行されません。

なぜこれが起こっているのですか?

1
Mr.D

Sudoは、独自の制限された環境でプログラムを実行します(マニュアルman Sudoの環境セクションを参照)。プログラムの実行に暗黙的にbashを使用しないため、~/.bashrcは実行されませんが、明示的に呼び出すことはできます。

Sudo bash --rcfile=~root/.bashrc -c ProgramAndParameters

実行文字列に環境変数を設定できます。

Sudo variable=value ProgramAndParameters

デフォルトでは、エイリアスまたは関数を使用してこれらのいずれかを実行できます。

または、環境ファイルを/etc/sudoersに追加することもできます(詳細については、man sudoersを参照してください)。

2
AFH