いくつかの環境変数を設定し、最終的にsudoを使用して別のスクリプトを呼び出すスクリプトがあります。
sudoで実行されるスクリプトはこれらの変数を取得できるはずですが、これらの変数が何であるかは必ずしもわかりません。
コマンドが呼び出し元の環境変数へのフルアクセスを許可するようにこのsudoersエントリを設定する方法はありますか?
%deploy ALL=NOPASSWD: /bin/build.sh
スクリプトでsudoコマンドを実行するとき:
sudo -E build.sh "$@"
私は得る:
sudo: sorry, you are not allowed to preserve the environment
インターネット検索では、すべての変数ではなく特定の変数を保持する方法だけを見つけました。
ベストアンサー1
最初の答えをテストし、まだ入手したら、よりsudo: sorry, you are not allowed to preserve the environment
良い解決策を見つけることにしました。
いくつかのテストを経た後、重要なオプションがsetenv
。
Defaults!/bin/build.sh setenv
より安全にするために、いくつかの設定を追加できます。
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11/bin"
Defaults!/bin/build.sh setenv,env_reset,env_delete+=PATH,env_delete+=LD_PRELOAD,env_delete+=LD_LIBRARY_PATH,env_delete+=SSH_AUTH_SOCK,env_delete+=PYTHONPATH,env_delete+=PERL5LIB
%deploy ALL=(ALL) NOPASSWD: /bin/build.sh *