
在 Windows Server 2012 R2 中,IIS 在通常情況下會以 Web 伺服器執行。然而,網頁內容不是來自c:\inetpub\wwwroot\
其他資料夾,而是來自其他資料夾。 Web 應用程式仍在自己的使用者(來自 defaultAppPool)下運行。
我實際上忘記授予IIS_IUSRS
對 Web 內容資料夾的讀取/執行權限。該資料夾確實提供了存取users
權限。我僅IIS_IUSRS
在子資料夾需要可寫時新增讀取/執行/寫入權限。
為了加強安全性,我檢查了 Web 內容資料夾的存取權限,並透過反覆試驗了解到,現在IIS_IUSRS
缺少存取權限,而users
負責一切的群組的存取權限仍然有效。因為當我刪除對該users
群組的存取權限時,該應用程式將停止運作。
我嘗試授予對其他一些帳戶/群組的存取權限,我發現授予對這兩個帳戶/群組的存取權限users
並IIS_IUSRS
單獨運行我的應用程式。授予存取權限卻IIS APPPOOL\
沒有。但授予我的特定應用程式集區使用者 (EG IISAPPPOOL\nl-x-homepage
) 的存取權限卻可以。最後一點就是我想要的,因為我不希望一個應用程式能夠存取其他應用程式的檔案。
但我想知道...類似 IIS 的帳戶到底是如何運作的?為什麼授予存取權限users
也適用於我的應用程式集區存取 Web 內容資料夾?我在 lusrmgr 中看不到我的特定應用程式集區用戶,但我猜測我的特定應用程式集區用戶位於該users
群組中,或位於該users
群組中的某個其他群組。誰能證實這一點嗎?
作為此事的最後一個問題:為了讓特定資料夾受到“密碼保護”,我在 Windows 中創建了一個普通用戶,從群組中刪除了該用戶users
,然後在IIS 管理器中,我轉到該資料夾並執行了身份驗證-> 基本身份驗證 - > 已啟用,並且在身份驗證規則中我已為新建立的 Windows 使用者帳戶設定了允許規則。這有效。但分析讀取/寫入存取權限時我驚訝地發現,雖然應用程式運行在應用程式集區使用者下,但應用程式集區使用者只需要讀取權限(沒有寫入權限),而新建立的Windows 使用者需要同時具有讀取和寫入權限。有人可以幫忙解釋為什麼會這樣嗎?
答案1
你所遇到的行為對我來說似乎很合乎邏輯。
IIS_IUSRS 是一個群組,而不是一個帳戶,其唯一目的是使其成員能夠被分配為應用程式集區身份,因此僅添加它本身是不夠的(正如您所發現的)。
Users 群組包含 ASPNET 帳戶,該帳戶具有足夠的權限讓網站正常運作,因此添加它足以獲得預設權限。我相信 ASPNET 帳戶是用作 DefaultAppPool 的帳戶。
使用者建立的檔案或資料夾始終具有讀取權限,因為創建者是擁有者,擁有所有權限。如果另一個使用者建立了檔案或資料夾,則僅授予寫入權限而不授予讀取權限在 Windows 中永遠不會起作用,因為在寫入之前需要讀取存取權限來檢查權限和可用空間等。
答案2
IIS_IUSRS 是 IIS 工作進程帳戶群組。此內建群組可以存取所有必需的檔案和系統資源,因此新增至該群組的帳戶可以無縫充當應用程式集區身分。
如果右鍵單擊該網域並開啟“編輯權限”,您應該會看到列出的群組和權限。在「安全性」標籤下,您將看到 MACHINE_NAME\IIS_IUSRS 以及 /Users。 IIS 自動對該目錄具有唯讀權限。
對於您建立的每個應用程式集區,新應用程式集區的 Identity 屬性預設為 ApplicationPoolIdentity。 IIS 管理進程 (WAS) 將使用新應用程式集區的名稱建立一個虛擬帳戶,並預設在該帳戶下執行應用程式集區的工作進程。每當建立新的應用程式集區時,IIS 管理程序都會建立一個表示應用程式集區本身名稱的安全性識別碼 (SID)。例如,如果您建立名為「MyFirstPool」的應用程式池,則會在 Windows 安全系統中建立名為「MyFirstPool」的安全性識別碼。從此時起,可以使用此身分來保護資源。但該身分並非真實的使用者帳號;它不會在 Windows 用戶管理主控台中顯示為用戶。這是正常行為。如果您想提供對某個資料夾的存取權限,只需透過編輯權限將其新增至該資料夾即可。但是,您必須檢查預設身份驗證配置(匿名身份)並查看是否可以進行正確的選擇,或者對其進行配置以避免存取錯誤。
這個帖子解決其餘問題。遺產。
顯然,您在此處新增的 Windows 使用者需要權限,因為該帳戶必須從必要的群組繼承權限。此處的閱讀許可至關重要。然而,它旨在訪問本地資源。