Samba

較舊的 CIFS 無法從 Samba-4 伺服器掛載共享

  • September 22, 2020

我有一個媒體播放器,它可以毫無問題地連接到執行 Samba 的主電腦。它執行舊版本的嵌入式 Linux(核心 2.6.22.19-27)並具有 CIFS。

在某些時候,在我升級伺服器上的 Samba 軟體(目前在 FreeBSD-10.4 上執行的 samba-4.6.8)後,播放器失去了這種能力——它仍然可以列出相同的導出共享,但不能再打開任何東西:“錯誤的憑據”。

我手機上支持 SMB 的應用程序可以很好地打開相同的文件夾(使用相同的憑據)…

是否有一些選項我需要顯式打開伺服器以啟用與舊客戶端的某種兼容模式?

更新:根據@Tin 的建議,我在 - 部分添加了以下行[global]smb4.conf不幸 的max protocol = NT1 是,這並沒有改變——除了媒體播放器,我仍然可以從大多數係統連接,它仍然告訴我,我的憑據都不好。

在伺服器上使用tcpdump我擷取了以下交換:

   SMB PACKET: SMBnegprot (REQUEST)
   SMB Command   =  0x72
   Error class   =  0x0
   Error code    =  0 (0x0)
   Flags1        =  0x0
   Flags2        =  0x1
   Tree ID       =  0 (0x0)
   Proc ID       =  1283 (0x503)
   UID           =  0 (0x0)
   MID           =  1 (0x1)
   Word Count    =  0 (0x0)
   smb_bcc=12
   Dialect=NT LM 0.12

伺服器響應的:

SMB PACKET: SMBnegprot (REPLY)
SMB Command   =  0x72
Error class   =  0x0
Error code    =  0 (0x0)
Flags1        =  0x80
Flags2        =  0x3
Tree ID       =  0 (0x0)
Proc ID       =  1283 (0x503)
UID           =  0 (0x0)
MID           =  1 (0x1)
Word Count    =  17 (0x11)
NT1 Protocol
DialectIndex=0 (0x0)
SecMode=0x3
MaxMux=50 (0x32)
NumVcs=1 (0x1)
MaxBuffer=16644 (0x4104)
RawSize=65536 (0x10000)
SessionKey=0xA4AA
Capabilities=0x80F3FD
ServerTime=Sun Oct  1 18:00:38 2017
TimeZone=240 (0xf0)
CryptKey=Data: (1 bytes)
...

然後客戶說:

   SMB PACKET: SMBsesssetupX (REQUEST)
   SMB Command   =  0x73
   Error class   =  0x0
   Error code    =  0 (0x0)
   Flags1        =  0x0
   Flags2        =  0x1
   Tree ID       =  0 (0x0)
   Proc ID       =  1283 (0x503)
   UID           =  0 (0x0)
   MID           =  2 (0x2)
   Word Count    =  13 (0xd)
   Com2=0xFF
   Res1=0x0
   Off2=0 (0x0)
   MaxBuffer=16644 (0x4104)
   MaxMpx=50 (0x32)
   VcNumber=0 (0x0)
   SessionKey=0x0
   CaseInsensitivePasswordLength=24 (0x18)
   CaseSensitivePasswordLength=24 (0x18)
   Res=0x0
   Capabilities=0x80D0DC
   Pass1&Pass2&Account&Domain&OS&LanMan=
   smb_bcc=179
   ...

最後是伺服器:

SMB PACKET: SMBsesssetupX (REPLY)
SMB Command   =  0x73
Error class   =  0x6D
Error code    =  49152 (0xc000)
Flags1        =  0x80
Flags2        =  0x3
Tree ID       =  0 (0x0)
Proc ID       =  1283 (0x503)
UID           =  0 (0x0)
MID           =  2 (0x2)
Word Count    =  0 (0x0)
NTError = STATUS_LOGON_FAILURE
smb_bcc=0

到底是怎麼回事?

更新:我可以掛載任何東西的方法是創建一個密碼為空的帳戶 ( smbpasswd -n ...) 並進行編輯smb.conf以允許null passwords

好的,這裡是對 Samba-4.5 中引入的預設設置的更改列表。就我而言,我必須明確地將一件事改回“是”以允許我的媒體播放器訪問伺服器:

[global]
   ntlm auth = yes

我的猜測是新版本禁用了 SMB1。檢查配置是否有類似於:“min protocol = SMB2”的行。

當我(故意)在我的家庭伺服器上禁用 SMB1 時,我得到了類似的結果。所有 Kodi 媒體播放器都無法連接,並引發了有關身份驗證的錯誤。

引用自:https://serverfault.com/questions/876320