ユーザーがsudoersから他のユーザーにコマンドを実行できるようにする

ユーザーがsudoersから他のユーザーにコマンドを実行できるようにする

したがって、sudoersファイルには次のエントリがあります。

user1 ALL=(user2) NOPASSWD: /scripts/dir/

/scripts/dir/これにより、user1は同じコマンドを使用して、パスワードを入力しなくてもuser2ですべての実行可能ファイルを実行できますsudo -u user2 /scripts/dir/script。しかし、実行ファイルが$PATH, $DISPLAYuser2の環境(など)で実行されると予想される問題が発生しました。 user1はsudo -iu user2 /scripts/dir/scriptシミュレートされたログインシェルのようなものを実行することでこれを行うことができますが、上記のsudoersエントリを使用すると機能せず、パスワードの入力を求められます。 user1がこのコマンドを実行できるようにするか、少なくともコマンドを実行したときにuser2の.bashrc、.cshrcなどを取得できるsudoersエントリがありますか?

オプションが見つかりSETENVましたが、これにより、user1はuser2の環境を採用する代わりに既存の環境を維持できます。source /home/user2/.bashrcこれを続けるsudo -Eu user2 /scripts/dir/scriptと、user1 user2 の環境にオプションが保持されますが、user1 はファイルに対する-E読み取り権限を持ち、.bashrcスクリプトは user1 に権限のないコマンドを実行しようとしないと想定します。走る。

sudoersのマニュアルページでは、-i次のようにオプションについて説明しますsudo

特別な場合に、sudoの-iオプション(初期ログイン)を指定すると、sudoerはenv_resetの値に関係なく環境を初期化します。 DISPLAY、PATH、および TERM 変数は変更されません。 HOME、MAIL、SHELL、USER、およびLOGNAMEは、ターゲットユーザーに応じて設定されます。 AIX(およびPAMなしのLinuxシステム)には、/ etc / environmentの内容も含まれています。 BSD システムで use_loginclass フラグが有効になると、/etc/login.conf の path 変数と setenv 変数も適用されます。他のすべての環境変数は削除されます。

これは、おそらくuser1にコマンドを実行する権限を-i与えたり、特にsudoersでオプションを許可したりすることによって、いくつかのsudoers設定でオプションを提供できることを示唆しているようです。しかし、私はこれを行うより細かい方法が欲しいです。また、これは私が望むものではなく、user1の環境を表すように見え、その環境から来ます。ALL-iPATHDISPLAY

もちろん、user1にこれを実行するのに必要なものよりも多くの権限を与えることはできますが、そうするとセキュリティリスクが発生する可能性があります。

ベストアンサー1

そのため、安全な方法が見つからなかったため、SETENV:sudoersエントリのオプションを使用するようになり、user1でコマンドを実行する前にuser2のソースを取得して.bashrcsudo-Eを呼び出すときにそのオプションを提供しました。 user1は、PATHユーザー2として任意の実行可能ファイルを実行できるように環境変数を設定できるため、これは私が望む操作を実行する安全な方法ではありません。

おすすめ記事