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

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

RHEL 7 を使用しており、sudo の環境変数を設定したいと考えています。

ルート ユーザーに切り替えて、そのファイルにsudo su追加するために を実行しました。その後、 でそれらを再ロードしました。export.bashrcsource

env現在、モードで実行するとroot環境変数が設定されます。ただし、終了して実行すると設定sudo envされません。

なぜこのようなことが起こるのでしょうか?

答え1

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

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

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

sudo variable=value ProgramAndParameters

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

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

答え2

sudoersエントリは以下のとおり

%DBTEAM     ALL = (oracle) NOPASSWD: ALL

DBTEAM --> グループ名

oracle --> oracle ユーザー名

環境変数なしでターゲットユーザーに切り替える sudo -s -u oracle

環境変数を使用してターゲットユーザーに切り替える sudo -i -u oracle

関連情報