當你的網站顯示 401.3 錯誤

IIS 網站部署後出現:

HTTP 錯誤 401.3 - Unauthorized
因為網頁伺服器上此資源的存取控制清單 (ACL) 設定或加密設定的緣故,您沒有檢視此目錄或網頁的權限。

HTTP 401.3 是什麼

HTTP 401.3 是 IIS 特有的狀態碼,表示「由於 ACL 限制,請求被拒絕」。與一般的 401(認證失敗)不同,401.3 明確指出這是檔案系統權限問題,不是網站認證設定的問題。

IIS 想提供你請求的資源,但它持有的身分沒有足夠的 NTFS 權限來讀取那些檔案。

IUSR 是什麼

IUSR(Internet User)是 IIS 的預設匿名存取帳戶。每當訪客在未登入的狀態下存取網站,IIS 就以 IUSR 的身分去讀取網站資源。如果網站資料夾的 NTFS ACL 沒有賦予 IUSR 讀取權限,就會觸發 401.3。

授予 IUSR 適當的權限

1. 找到你的網站根目錄

首先,找到你的網站檔案所在的實體路徑。通常是在:

  • C:\inetpub\wwwroot\你的網站名稱
  • 或是你自訂的其他位置

2. 設定資料夾權限

  1. 在檔案總管中,右鍵點選該資料夾
  2. 選擇「內容」
  3. 切換到「安全性」頁籤
  4. 點選「編輯」按鈕
  5. 點選「新增」按鈕
  6. 在「輸入物件名稱來選取」欄位中,輸入「IUSR」
  7. 點選「檢查名稱」,系統會自動找到完整的帳戶名稱
  8. 點選「確定」

3. 設定適當的權限級別

對於 IUSR 帳戶,通常建議設定以下權限:

  • ✅ 讀取與執行
  • ✅ 列出資料夾內容
  • ✅ 讀取

對於大多數靜態網站而言,這些權限已經足夠。如果你的網站需要上傳功能或寫入操作,你可能還需要加上「寫入」權限,但僅限於需要的特定資料夾,避免賦予過多不必要的權限。

4. 應用變更

點選「確定」數次,確保所有變更都已被應用。

5. 驗證結果

NTFS/ACL 權限變更是即時生效的——Windows 核心在每次開啟檔案時都會重新讀取 ACL,不需要重啟 IIS。直接重新整理瀏覽器即可確認錯誤是否消失。

注意:若你同時調整了應用程式集區身分或 IIS 設定檔,才需要執行 iisreset 讓 IIS 重新載入組態。只改 NTFS 權限不需要這個步驟,在正式環境更應避免非必要的全服務重啟。

完成以上步驟後,再次訪問你的網站,401.3 錯誤應該已經消失了。

IUSR vs. IIS_IUSRS

IIS_IUSRS 是什麼

IIS_IUSRS 是 Windows 安全群組,代表所有 IIS Worker Process 的執行身分。IIS 7 之後改為動態注入:Worker Process 啟動時,WAS(Windows Process Activation Service)會自動把 IIS_IUSRS 的 SID 加進處理程序的存取權杖,應用程式集區帳戶不需要被靜態加入群組。它取代了 IIS 6 時代的 IIS_WPG 群組。

兩者的定位差異:

  • IUSR:匿名訪客的執行身分,只在啟用匿名驗證時用到
  • IIS_IUSRS:涵蓋所有應用程式集區身分的群組,授權對象是「IIS Worker Process 本身」

何時只需要 IUSR

  • 網站只使用匿名驗證
  • 應用程式集區使用預設身分(ApplicationPoolIdentity)
  • 遵循最小權限原則

大多數靜態網站或簡單動態網站都屬於這種情況。

何時需要授權 IIS_IUSRS

  • 使用自訂應用程式集區身分,且希望以群組統一授權而非逐帳戶設定
  • 網站結構複雜,有多個子應用程式分屬不同集區
  • 需要「一次設定涵蓋所有集區身分」的管理便利性

注意:Windows 驗證或表單驗證走的是 Kerberos/NTLM 或 FormsAuthentication,和 IUSR/IIS_IUSRS 無關——授權方式本身不影響這兩個帳戶是否需要。

建議

先從最小權限開始(只加 IUSR)。需要涵蓋 Worker Process 本身的存取時再考慮 IIS_IUSRS。

進階:其他需要確認的設定

1. 檢查應用程式集區身分

應用程式集區(Application Pool)的執行身分也會影響檔案存取權限:

  1. 開啟 IIS 管理員
  2. 在左側樹狀目錄中找到「應用程式集區」
  3. 右鍵點選你的網站使用的應用程式集區
  4. 選擇「進階設定」
  5. 檢查「身分」設定

如果你使用自訂身分,確保該帳戶也具有網站資料夾的適當權限。

2. 特殊資料夾的權限設定

除了網站根目錄外,有些特殊資料夾需要額外的權限:

  • 暫存檔資料夾:需要寫入權限
  • 上傳資料夾:需要寫入權限
  • 日誌資料夾:需要修改(Modify)權限
  • App_Data 等應用程式資料夾:需要修改(Modify)權限,讓應用程式可以讀寫刪;不需要完全控制(Full Control)——後者還包含修改 ACL 的能力,遵循最小權限原則應避免

3. 使用命令列快速設定權限

如果你管理多個站點或需要頻繁設定權限,使用命令列可以提高效率:

1
icacls "C:\inetpub\wwwroot\你的網站路徑" /grant IUSR:(OI)(CI)RX /T

(OI)(CI) 讓權限套用到子資料夾與檔案,RX 是「讀取與執行」,/T 遞迴套用。帳戶名稱不加引號;若路徑包含空格,路徑本身用雙引號包即可。

安全性提醒

最小權限原則

只賦予必要的最低權限。網站只需要讀取就不要加寫入;上傳資料夾只給寫入,不給執行。

定期審查權限

定期檢查網站資料夾的 ACL,確認沒有遺留不必要的授權(例如 Everyone 或 Users 群組)。

考慮停用匿名驗證

如果網站包含敏感資訊,可以停用匿名驗證,改用 Windows 驗證或表單驗證——這樣 IUSR 就完全不在攻擊面上了。

總結

HTTP 401.3 是 ACL 問題,不是認證問題。排查順序:確認網站資料夾有 IUSR 的讀取權限 → 確認應用程式集區身分也有對應授權 → 檢查是否有 Explicit Deny 或繼承封鎖。大多數情況下加了 IUSR 讀取與執行即可解決。