スクリプトの一般的な「ターゲットユーザー」の意図された権限でスクリプトを実行するにはどうすればよいですか?

スクリプトの一般的な「ターゲットユーザー」の意図された権限でスクリプトを実行するにはどうすればよいですか?

スクリプトの開発中に、一部のエラーは他のユーザーがスクリプトを実行するまで「潜在的な」状態のままです。 (たとえば、スクリプトは、スクリプトを開発した人だけがアクセスできるファイルにアクセスできます。)

スクリプトの「ターゲットユーザー」と同じ権限でスクリプトを実行する方法はありますか?少なくともあるでしょう

(質問の表現を参照してください。場合によっては、「ターゲットユーザー」が「最小権限」よりも多くの権限を持つと予想される可能性があるため、「最小権限を持つユーザー」と書かれていません。ターゲットユーザーは特定のグループに属すると予想されます。)

もちろん、簡単な解決策は必要な権限を持つダミーユーザーを作成することですが、このソリューションにはユーザー作成権限が必要であり、必ずしもそうではありません。仮想ユーザーを作成できなくても機能するソリューションに興味があります。

答え1

仮想マシンが安かった時代には、テストユーザーを作成できないことがよくありました。

PATH合理的なデフォルト値(通常/usr/local/bin:/usr/bin:/binHOMEやプログラムに必要なすべての環境など、最小環境でプログラムを実行できます。HOMEホームディレクトリまたは他の場所(下など)のサブディレクトリに設定し、プログラムが見つかると/tmp予想されるファイルのみを入力します。これはすでに予期しない環境依存性の最初のテストです。/tmp/for-testing/binサードパーティ製ソフトウェアへの予期しない依存関係をテストするのに十分な少数のプログラムのみを含めるようにパスを制限できます。それにもかかわらず、いくつかのディストリビューションの基本インストールをテストする方が決定的です。

プログラムが一部のローカルファイルにアクセスする必要がある場合でも、次を使用して他のファイルへの予期しない依存関係をテストできます。近さ。システムに必要なもの(リンカと標準ライブラリまで)とプログラムとそのデータファイルを含むディレクトリを作成し、その中にfakechrootを置きます(実際のchrootにはroot権限が必要です)。

答え2

私の質問の理解は、特定のユーザーとしてスクリプトを実行したいので、開発ユーザーアカウントに関連する開発ではないということです。これがまさにsudoの目的です。次のようにsudoユーザールールを作成します。

devUser    ALL=(targetUser)    NOPASSWD: /path/to/script

「devUser」は、次のようにスクリプトを実行できます。

$ sudo -u targetUser /path/to/script

NOPASSWDを使用すると開発が容易になるため、私は「su」よりsudoを好みます。

関連情報