私が何を求めているのかを理解するには、Unix での SUID のいくつかの用途と区別することが重要です。
プロジェクトが所有し、SUID ビットが設定されているユーザーの PATH で実行可能ファイルを使用するプロジェクトがあります。このように、実行すると、呼び出し元のユーザーではなく、ファイルの所有者のコンテキストで実行されます。このようにして、ユーザーがアクセスできないものにアクセスできるため、これらのものは通常のファイルシステム保護によってユーザーから保護されます。これはかなりうまく機能します。プロジェクトをクライアント サーバー アーキテクチャに移行する計画ですが、それにはしばらく時間がかかります。それまでの間、Windows システムでこの種の動作を再現するにはどうすればよいですか?
プロジェクトの実行可能ファイルは SETUID ライブラリ呼び出しを呼び出さないことに注意してください。率直に言って、プロジェクトの機能を考えると、これは追加するのに最適な機能です。プロジェクトには、システムのルート権限は必要ありません。最初のセキュリティ上の懸念は、ユーザー (ファイル所有者以外の任意のユーザー) から独自のファイルを保護する必要があることであり、ファイルにアクセスするために「ユーザー コンテキスト」に切り替える機能があれば非常に便利です。あたかも呼び出し元のユーザーであるかのようにシステム。(このようにして、プロジェクトが触れてもよいものとそうでないものをより簡単に判断できます。)
プロジェクトは C と Java の組み合わせで書かれています - SUID が設定された C プログラムは Java コードを呼び出します...
私はそのようなメカニズムをすべて知りたいと思っており、特に次のようなメカニズムに焦点を当てています。
- C および Java に適しています。
- Windows 以外のプログラマーでも簡単に実装できます。
- Windows に固有の最小限のコーディングが必要です。
いくつかの解決策が優れている場合は、この点に関してあなたが知っていることについてあなたの考えを共有してください.
ノート:
- LogonUser: プレーン テキストのパスワードが必要です。それがどうして答えになるのでしょうか。
- RunAs: PROMPT でパスワードを入力する必要があります。... LogonUser の場合と同様に、さらに悪いことです。これがどのように答えているのかわかりません。