可以写入只读文件夹

时间:2012-11-25 12:28:37

标签: asp.net windows iis

环境是Windows 2008 R2,ASP.NET 4,IIS 7.我有一个场景,用户向服务器提交一些设置,服务器根据设置(位图或SVG文件)生成文件)并将文件保存到文件夹中。通过写入位图生成图像,并使用File.WriteAllText生成SVG文件。然后将用户重定向到该文件。

我没想到的是服务器能够创建文件,而我没有给文件夹写入权限。我检查过的事情:

  • w3wp.exe在IIS AppPool / MyUser下运行,正确的应用程序池标识
  • IIS AppPool / MyUser对该文件夹具有读取权限 - 如果我转到Security / Advanced / Effective Persmissions并检查文件夹上MyUser的权限,我会获得列表文件夹/读取数据,读取属性,读取扩展属性和阅读权限
  • 如果我在写入文件之前获取System.Security.Principal.WindowsIdentity.GetCurrent()。Name,则将其正确设置为应用程序池标识。
  • 创建的文件的所有者是MyUser

我不明白为什么ASP.NET可以在应用程序池具有只读访问权限的文件夹中创建文件?

1 个答案:

答案 0 :(得分:0)

原来,Users组对该文件夹具有Create File的特殊权限。不确定为什么在Windows 2008中默认添加 - 在我的所有服务器盒上,新文件夹是使用具有Create Files和其他一些特殊权限的用户创建的。在Windows 7上的行为是不同的 - 没有特殊权限添加到Users组。

无论如何,删除该许可解决了这个问题。

感谢。