當您在 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 - 同步處理

疑難排解

您可以使用下列方法來驗證問題並進行疑難解答。

  1. 確認 NetApp Filer 已在資料夾上設定 Synchronize 位。

  2. 網路追蹤可以在要求和回應封包的資料夾上顯示SMB2 CREATE進程的 DesiredAccess 錯誤。

  3. 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 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。