sudo
特定の環境変数が指定されたコマンドに対してのみ保持されるように指定する方法はありますか?ある目的のために私は私の$HOME
環境が欲しい。特定のコマンドを実行すると、変数は保持されます。他の目的や他のコマンドのためにリセットしたいと思います。これは可能ですか/etc/sudoers
?
編集する:
回答ありがとうございます。 「それで、なぜこれがうまくいかないのか」という後続の質問をすることができるのだろうかと思いました。
開始したい例では、次のように私sudo nano
の$HOME/.nanorc
。
Defaults:simon env_keep=HOME
完璧に動作します。私がこれを使用している場合:
Defaults!/bin/nano env_keep=HOME
またはこれ:
Cmnd_Alias NANO = /usr/bin/nano,/bin/nano,/bin/rnano
Defaults!NANO env_keep=HOME
まったく動作しません。理由の提案がありますか? (しかし、Debian でテスト中です。)
(注:これは具体的ではないと思います。btw -nano
単純な1行のbashスクリプトで動作を再現できます)。echo
$HOME
答え1
env_keep
/path/to/command
(すべてのユーザーがルールを介して呼び出す場合)およびユーザーjoe
(実行中のコマンドに関係なく)のみをオーバーライドします。
Defaults!/path/to/command env_keep=HOME
Defaults:joe env_keep=HOME
-=
またはを使用して、リスト+=
から項目を削除または追加できます。env_keep
答え2
Cmnd_Alias PBUILDER = /usr/sbin/pbuilder,/usr/sbin/cowbuilder
Defaults!PBUILDER env_keep+=HOME
この行は、ユーザープロファイルを見つけるためにrootとして実行する必要がある問題を解決するために書かれています/etc/sudoers
(これを移動すると、システムプロファイルとユーザープロファイルの両方の目的が失われます)。pbuilder
$HOME
/root
答え3
男性の首都:
env_reset If set, sudo will reset the environment to only contain
the LOGNAME, SHELL, USER, USERNAME and the SUDO_*
variables. Any variables in the caller’s environment
that match the env_keep and env_check lists are then
added. The default contents of the env_keep and
env_check lists are displayed when sudo is run by root
with the -V option. If the secure_path option is set,
its value will be used for the PATH environment
variable. This flag is on by default.
はい。 /etc/sudoers.conf でenv_reset
、 と を使用してenv_keep
これを行うことができます。env_check