プログラムにそれを実行するユーザーの権限を与えたいのですが、セトゥイドWindows (できれば Windows 7、または少なくとも Windows XP 以降) ではどうですか?
プログラムに、それを実行するユーザーよりも高い権限を与えたい場合はどうすればよいでしょうか? (たとえば、プログラムに Program File への書き込みを許可したいが、ユーザーには許可したくない場合など)。
答え1
簡単に答えると、プログラムを生成したユーザーの権限で実行するために何もする必要はありません。これは Windows システムの標準です。
SetUIDのように、プログラムを全く別のユーザーとして実行するように強制するために、Microsoftはルナスコマンドを使用すると、別のユーザーの資格情報で実行可能ファイルを呼び出すことができます。
さらに、Windows 7 などの UAC 対応システムでは、実行可能ファイルを Shift キーを押しながら右クリックして、別のユーザーとしてプログラムを実行し、必要に応じてそのユーザーの管理者権限を呼び出すことができます。
以下の回答は Sticky に関する元の質問に関連していることに注意してください。
質問に直接答えると、はい、いいえです。機能をエミュレートすることはできますが、アプリケーションはまったく異なります。
Sticky ビットを他の特殊な UNIX 権限 SetUID および SetGID と混同しているのではないかと思います。これらは両方とも、プロセスを呼び出すユーザーに関連してアプリケーションの実行方法に影響しますが、Sticky は影響しません。
Sticky では、たとえユーザーが書き込み権限を持っていてファイルを編集できる場合でも、root または所有者ユーザー以外のユーザーはファイルを削除したり名前を変更したりすることはできません。
詳細な権限ウィンドウ(オブジェクトのプロパティ -> セキュリティタブ -> 詳細設定)では、追加または編集を行うことができます。権限「ユーザー」に対して、権限とCREATOR OWNER
権限を付与します。次に、ACL 内の他のすべてのエンティティに対して、同じ権限を取り消します (ただし、拒否はしません)。Delete
Delete subfolders and files
これにより、書き込み権限を持つすべてのユーザーが任意のファイルを作成/編集できるようになりますが、ファイルを削除できるのはファイルの所有者のみです。
このアプローチにも Sticky と同じ欠陥があることに注意してください。編集権限を持つすべてのユーザーが 0B でファイルを上書きできるということです。これは概念的にはファイルを削除するのと似ています (多くの人が同じくらい良いと主張しています...)。
幸運を。
答え2
Windows では、対象ユーザーのパスワードを知らないか、この情報をマシンに一度保存しておかないと、別のユーザーとしてプログラムを実行することはできません。
Windows 上のプログラムは、デフォルトでは常に現在のユーザーの権限を使用して実行されます。これは、プログラムがアクセスできるフォルダーや設定にも適用されます。これらの設定は、プログラムまたはフォルダーの [セキュリティ] タブで変更できます。
別のユーザーでプログラムを起動して (たとえば、SHIFT
+を押したright-click
まま選択するRun as different user
か、単にRun as administrator
)、マシン上で管理者権限を持つ別のユーザーの権限を付与することができます。
CMDコマンドを使用してrunas
もこれを実現でき、ショートカットに設定してログインを自動化することもできます。
例:
runas /user:.\localadmin /savecred notepad.exe
この/savecred
パラメータは、ユーザー パスワードがすでにマシンに保存されており、実行時にパスワードが必要ないことをコマンドに伝えます。パスワードは、まずコントロール パネルの資格情報マネージャーに保存する必要があります。
この場合も、他のユーザーのプロファイルを使用してプログラムがロードされることに注意してください。たとえば、AppData に設定を保存したプログラムは、プログラムを実行したユーザーから設定をロードします。
ただし、Windowsサービスは別のユーザーとして実行できます。これは次のように実行できます。
Services.msc コンソール > サービスを選択 > プロパティ > ログオン