2

環境は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がアプリケーションプールが読み取り専用アクセス権を持つフォルダーにファイルを作成できる理由です。

4

1 に答える 1

0

Usersグループには、フォルダーに対するファイルの作成の特別なアクセス許可がありました。これがWindows2008でデフォルトで追加される理由はわかりません。すべてのサーバーボックスで、ファイルの作成などの特別なアクセス許可を持つユーザーで新しいフォルダーが作成されます。Windows 7では動作が異なります。つまり、Usersグループに特別なアクセス許可は追加されません。

とにかく、その許可を削除すると問題が解決しました。

ありがとう。

于 2012-11-25T13:10:41.320 に答える