本文可協助您解決當 FTP 用戶隔離設定在月臺層級設定 FTP 用戶隔離時,不會繼承 FTP 授權規則的問題。
原始產品版本:網際網路資訊服務 7.5
原始 KB 編號: 4294477
徵兆
在 Microsoft 網際網路資訊服務 (IIS)中,如果 FTP 使用者隔離設定在月臺層級設定為 [使用者名稱實體目錄](啟用全域虛擬目錄),則 FTP 授權規則不會遵守應用程式的實體路徑,而且不會依資料夾結構繼承。
假設 IIS FTP 網站的使用者隔離設定為 [使用者名稱實體目錄](啟用全域虛擬目錄),並在 FTP 授權功能中授與所有使用者讀取許可權。 名為 Upload 的資料夾會在 下\FTP\Localuser\<user_name>\
建立,而且會透過 IIS 中此 Upload 資料夾的 FTP 授權功能,授與所有使用者讀取和寫入許可權。 儘管有上傳資料夾的寫入許可權,但是當用戶名稱符合<路徑中user_name>資料夾的使用者嘗試上傳 [上傳] 資料夾中的檔案時,使用者會收到拒絕存取的錯誤訊息。
嘗試透過 Windows 中包含的命令列 FTP 公用程式上傳 FTP 檔案的輸出如下所示:
ftp> cd upload
250 CWD command successful.
ftp> put c:\file_name.txt
200 EPRT command successful.
550-Access is denied.
Win32 error: Access is denied.
Error details: Authorization rules denied the access.
550 End
原因
這是依照設計的行為。 FTP 使用者隔離 使用者名稱實體目錄 (啟用全域虛擬目錄) 設定可確保與舊版 IIS 6 功能的回溯相容性。
解決方法
若要取得所需的行為,請使用使用者隔離資料夾以外的另一個資料夾,然後在該資料夾上設定必要的 FTP 授權規則。 對於使用 使用者名稱實體目錄(啟用全域虛擬目錄) 隔離的 FTP 月臺,請使用 FTP/Upload
路徑,而不是 FTP/LocalUser/<user_name>/Upload
設定 FTP 授權規則。 目錄剖析器會忽略 路徑 FTP/LocalUser/<user_name>/Upload
的一部分,因為這是用於隔離查閱。 因此,只有在使用者隔離資料夾以外的路徑上定義授權規則時,行為才會如預期般運作,例如 FTP/Upload
範例路徑。 如此一來,授權會套用至所有使用者的 [上傳 ] 資料夾。
以下是 ApplicationHost.config 檔案中的範例授權規則:
<location path="FTP/Upload">
<system.ftpServer>
<security>
<authorization>
<remove users="*" roles="" permissions="Read" />
<add accessType="Allow" users="*" permissions="Read, Write" />
</authorization>
</security>
</system.ftpServer>
</location>
當您試著將檔案上傳至具有此設定的 FTP 月臺時,Windows 中 FTP 命令提示字元公用程式的輸出如下所示:
ftp> cd upload
250 CWD command successful.
ftp> put c:\file_name.txt
200 EPRT command successful.
125 Data connection already open; Transfer starting.
226 Transfer complete.
ftp: 14 bytes sent in 0.00Seconds 14000.00Kbytes/sec.
用戶隔離 使用者名稱實體目錄 (啟用全域虛擬目錄) 設定繼承自 IIS 6,且未遵循正確的資料夾結構。 另一個隔離模式 使用者名稱目錄 (停用全域虛擬目錄)存在於 IIS 7 和更新版本中,而且此設定會遵循授權規則。