%ProgramFiles% に NTFS アクセス許可を設定できないのはなぜですか?

%ProgramFiles% に NTFS アクセス許可を設定できないのはなぜですか?

%ProgramFiles%Windows Server 2019 の管理者ユーザー アカウントを使用して、、、およびのユーザー アカウントの NTFS アクセス許可を変更しようとしています%ProgramFiles(x86)%が、フォルダーが によって所有されているため、エラーが%WinDir%発生します。access deniedTrustedInstaller

  • 基本権限ダイアログと詳細権限ダイアログの両方を試しましたが、詳細権限ダイアログを使用して権限を変更するC:と、サブ項目への変更が伝播するときに、これらの3つのフォルダーで失敗します。
  • フォルダの所有権を変更することは可能だと思いますが、そうすることは良い考えではないと思います。

なぜこのようなことが起こるのでしょうか、またそれを回避する方法はあるのでしょうか?

  • 私が実現しようとしているのは、ユーザー アカウントをサンドボックス化し、単一の自動化目的で使用される 2 つのアプリ (1 つは のサブフォルダーにあり、%ProgramFiles%もう 1 つは別のドライブにあります) を除くすべてのアプリの実行権限を拒否することです。

答え1

これはフォルダの現在ACL は、管理者アカウントに ACL を設定する権限を付与しません。所有者でない場合は、明示的にその種のアクセスを許可されない限り、ACL を変更することはできません。これは管理者にも当てはまります。

(フル コントロールを付与するアクセス エントリは(IO)「継承のみ」としてマークされています。これは子オブジェクトにのみ影響し、元のフォルダーには影響しません。)

これを回避する 1 つの方法は、SeRestorePrivilege をアクティブ化することです (例: PSPrivilege コマンドレットを使用)。これは、エクスプローラーが任意の所有者を設定するために使用するものですが、icacls変更を加える前に権限を手動で再度無効にするため、機能しません。ただし、別のツール (PowerShell 独自のSet-Acl) を使用すると機能する可能性があります。

もう 1 つの方法は、TrustedInstaller 権限で任意のコマンドを実行できるようなツールを使用することですgsudo --ti(Windows コンポーネントが権限を取得するのとほぼ同じ方法です)。

関連情報