當您在 Windows 中存取 SMB 檔案共享時拒絕存取
本文可協助修正當您存取伺服器消息塊塊 (SMB) 檔案共享時所發生的拒絕存取錯誤。
適用於:Windows Server 2012 R2 和 Windows 7 S
原始 KB 編號: 3035936
徵狀
當您嘗試透過SMB第2版通訊協定從 Windows 系統存取網路設備 (NetApp) Filer 或支援 SMB2 的 Windows Server 的特定資料夾時,存取會遭到拒絕。 此問題發生在下列 Windows 版本中:
- Windows 8.1
- Windows Server 2012 R2
- Windows 8
- Windows Server 2012
- Windows 7
- Windows Server 2008 R2
- Windows Vista
- Windows Server 2008
注意事項
如果您在用戶端上停用SMB2通訊協定,或使用Windows SMB用戶端,例如Windows XP或 Windows Server 2003,就不會發生此問題。
原因
發生此問題的原因是SMB共用上的目標資料夾遺失SYNCHRONIZE存取控制專案。
解決方案
若要解決此問題,請使用 ICACLS 公用程式 來設定包含 Synchronize 位的所需許可權。
例如,在命令提示字元中輸入下列命令,然後按 ENTER:
ICACLS h:\folder /grant domain\user:(RC,RD,REA,RA,X,S)
以逗號分隔的清單,以特定許可權括弧括住:
- RC - 讀取控件
- RD - 讀取資料/列表目錄
- REA - 讀取擴充屬性
- RA - 讀取屬性
- X - execute/traverse
- S - 同步處理
疑難排解
您可以使用下列方法來驗證問題並進行疑難解答。
確認 NetApp Filer 已在資料夾上設定 Synchronize 位。
網路追蹤可以在要求和回應封包的資料夾上顯示SMB2 CREATE進程的 DesiredAccess 錯誤。
AccessChk.exe 工具可在 Windows Sysinternals 網站上讀取許可權設定。
例如,執行下列命令:
C:\tools\Sysinternals\accesschk.exe -ld
然後,您可以看到下列結果,其中顯示已設定 SYNCHRONIZE 位:
[2] ACCESS_ALLOWED_ACE_TYPE: BUILTIN\Users [OBJECT_INHERIT_ACE] [CONTAINER_INHERIT_ACE] [INHERITED_ACE] FILE_LIST_DIRECTORY FILE_READ_ATTRIBUTES FILE_READ_EA FILE_TRAVERSE SYNCHRONIZE READ_CONTROL
請參閱 Windows SMB2 用戶端上的 SYNCHRONIZE 位行為 。
協力廠商資訊免責聲明
本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應