環境はWindows2008R2、ASP.NET 4、IIS 7です。ユーザーがサーバーにいくつかの設定を送信し、サーバーが設定に基づいてファイル(ビットマップまたはSVGファイル)を生成して保存するシナリオがあります。ファイルをフォルダに入れます。画像はビットマップを書き込むことによって生成され、SVGファイルはFile.WriteAllTextを使用して生成されます。その後、ユーザーはそのファイルにリダイレクトされます。
私が予期していなかったのは、サーバーがフォルダーへの書き込み権限を与えなくてもファイルを作成できたということです。私がチェックしたこと:
- w3wp.exeは、正しいアプリプールIDであるIIS AppPool/MyUserで実行されています
- IIS AppPool / MyUserにはフォルダーへの読み取りアクセス許可があります-セキュリティ/詳細/有効なアクセス許可に移動し、フォルダー上のMyUserのアクセス許可を確認すると、フォルダーの一覧表示/データの読み取り、属性の読み取り、拡張属性の読み取り、およびアクセス許可が表示されます
- ファイルが書き込まれる直前にSystem.Security.Principal.WindowsIdentity.GetCurrent()。Nameを取得すると、アプリケーションプールIDに正しく設定されます。
- 作成されたファイルの所有者はMyUserです
私が理解していないのは、ASP.NETがアプリケーションプールが読み取り専用アクセス権を持つフォルダーにファイルを作成できる理由です。