Windows-Server-2008

ApplicationPoolIdentity 使用者無法修改 Windows Server 2008 中共享文件夾中的文件

  • August 9, 2011

我正在創建目錄,並將文件寫入託管在 Windows Server 2008 上的 Web 應用程序中的共享文件夾。我正在執行具有 ApplicationPoolIdentity 標識的應用程序池。

到目前為止,為了讓您了解我的設置。我已將 Web 應用程序根目錄的根權限設置為兩個不同的使用者:“IUSR”和“IIS APPPOOL\MYPOOL”。我使用名稱“MYPOOL”作為我的應用程序池的名稱,因此很容易引用。

應用程序無法修改和寫入共享文件夾。我右鍵點擊要在其中創建目錄和寫入的共享文件夾,然後點擊“安全”選項卡。然後我點擊“編輯”。在對像下,我檢查了“電腦”。然後在 LOCATION 下,我嘗試了執行我的 Web 應用程序的機器/伺服器。我無法在使用者下找到我的“MYPOOL”使用者。我試圖按照這個連結,但它不是很完整。我不知道該使用哪個使用者。我繼續收到 System.IO 異常,因為它沒有權限。一旦我知道要使用哪個使用者,我就必須授予“ExportPath”目錄的“修改”權限。

這對我不起作用:http: //grekai.wordpress.com/2011/05/23/permissions-for-shared-folder-for-iis-7-application-pool-identity-across-domain/

為了快速測試,我製作了一個名為 FilePermissionsTest.aspx 的虛擬頁面,並在我的 Page_Load 事件後面的程式碼中放入了一些編寫文件的程式碼來創建目錄並編寫文件。但是我還沒有足夠遠來測試它,因為它不會寫入文件。

<div>
Check to see if the file "_File_Permissions_Test.txt" was written to <% Response.Write(Data.ConfigurationHelper.ValueFromConfiguration("ExportPath", Nothing))%> 
</div>

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
   Dim exportPath As String = Data.ConfigurationHelper.ValueFromConfiguration("ExportPath", Nothing)
   If exportPath = String.Empty Then Return
   Dim exportDirectory As DirectoryInfo = Directory.CreateDirectory(exportPath)

   Dim writer As StreamWriter = File.CreateText(Path.Combine(exportDirectory.FullName, "_File_Permissions_Test.txt"))
   writer.WriteLine("TESTING... " + DateTime.Now().ToString)
   writer.Flush()
   writer.Close()

End Sub

如果您使用指定的身份執行應用程序池,則授予電腦帳戶權限將不起作用。您應該使用域帳戶執行 AppPool,並授予該帳戶對共享文件夾的適當權限。如果共享文件夾位於遠端電腦上,則使用本地帳戶也將不起作用。

如果您沒有域,則可以使用 LocalSystem 執行 AppPool,這應該與授予電腦帳戶對共享文件夾的權限一起使用。但從安全形度來看,這可能不是最理想的。

引用自:https://serverfault.com/questions/292057