
環境:
Linux X86 伺服器與 Debian 9.3
內核:Debian 4.9.65-3+deb9u1
smbclient:版本4.5.12-Debian
cifs-utils:2:6.7-1
情況:
Backupserver ( backuppc
) 必須備份 Windows 10 Home 用戶端。
無域名
選擇:
用於其他 Win7 用戶端的 Cygwin/Rsync 由於涉及手動工作而被拒絕。
已知的先決條件:
Win10Client 的 DNS 項目:已完成、已測試且運作正常
Win10Client 的 DHCP 條目:已完成、已測試且工作正常
SMB1 不安全,因此不要走「簡單的方法」。
smbclient 支援 SMB2/3 協議,因此我不必設定 smb1 註冊表 hack 來啟用 SMB1,例如
如何檢查 Windows Server 2008 R2 上啟用了哪個 SMB 版本
問題:我無法掛載管理共享或任何其他共享,也看不到它們smbtree -b -N
我嘗試過的:
我嘗試使用非管理共享(
$
最後沒有)我將管理共享從 重命名
C$
為mC$
或mC
。在文件中新增了測試共享。
新增了測試共享
C:\test
這些都不能透過 看到smbtree
。
直接連接到共享(或獲取共享清單):
測試:
smbclient -U WIN10Username -L //CLIENT/
protocol negotiation failed: NT_STATUS_CONNECTION_RESET
smbclient -L //CLIENT/
protocol negotiation failed: NT_STATUS_CONNECTION_RESET
我該如何讓它與 SMB2 或 SMB3 協定一起工作?
答案1
howto 的答案包括多個部分,因為根據您的需要,情況可能會有所不同。
我透過各種搜尋包含了我發現(或相信發現)的所有內容,這幫助我解決了我的直接問題。
預設的 Debian 9 Stretch Kernel 不支援 SMB3
原來我的核心似乎不直接支援SMB3
基於https://lists.debian.org/debian-kernel/2017/04/msg00266.html
引用:
Am 22.04.2017 um 17:21 schrieb Ben Hutchings:
On Sat, 2017-04-22 at 16:19 +0100, Ben Hutchings wrote:
On Sat, 2017-04-22 at 14:47 +0200, [email protected] wrote:
Hi!
It´s not possible to mount a enrypted CIFS Share yet. is it possible
to add the following Kernel changes to Debian 8?
No, we don't backport big features like that.
Of course, if this feature is in Linux 4.9 (I don't know) then you have
the option to install the new kernel version from jessie-backports
(https://backports.debian.org/).
Ben.
根據我的研究,它也不在拉伸向後移植中(cifs-utils 支援從 4.11 開始的核心變更?)
https://packages.debian.org/stretch-backports/allpackages
然而,我不確定向後移植部分,因為有更新的內核,但就我而言,我不會升級到向後移植內核以實現此功能,所以我停在這裡。
smbtree 需要更多參數才能與 SMB3 搭配使用
我並不清楚如何讓 smbtree 與 SMB3 一起工作,並且由於我在上面發現了這個問題,所以我完全放棄了 SMB3 的想法。
https://www.samba.org/samba/docs/current/man-html/smbtree.1.html
smbclient 預設不使用 SMB2 或 SMB3。
smbclient 的 smb 協定的預設版本是
中小企業1
Windows 10 預設不支援此功能。
如果您的用例需要此功能,則必須新增相應的登錄項目:
HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\SMB1(類型 DWORD32,值 1 表示打開,0 表示關閉)
Powershell 指令:
探測:
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
使能夠:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 –Force
禁用:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force
您可能需要更改 Windows 10 中的檔案共用加密等級才能使 SMB1 正常運作:
因為我沒有直接測試它,所以我不知道它是否真的需要:
例如,請參閱如何從此處執行此操作:
https://www.tenforums.com/tutorials/51024-change-file-sharing-encryption-level-windows-10-a.html
引用:
在網路和共享中心更改文件共享加密級別
開啟控制台,然後按一下/點選網路和共用中心圖示。
點擊/點擊左側的更改高級共享設定連結。 (見下面的截圖)
展開所有網路網路設定檔。
在“檔案共用連線”下,選擇“為使用 40 位元或 56 位元加密的裝置啟用檔案共用”
工作命令
現在讓事情真正發揮作用
非行政份額:
更改 smbclient 指令
smbclient -U WIN10Username -L //Client/
到
smbclient -m SMB2 -U WIN10Username -L //Client/
讓您查看該客戶的股票。
作為控制台實際存取它的 mountparam:
mount -t cifs -o vers=2.0,username=WIN10Username,password=WIN10Password //CLIENTIP/TESTSHARE MOUNTPOINT
或作為 /etc/fstab 條目(啟動時不會自動掛載!)
//CLIENTIP/TESTSHARE /MOUNTPOINT cifs vers=2.0,username=WIN10Username,password=WIN10Password 0 0
行政份額
對於管理共享,您必須進行額外的註冊表變更(如果您不在網域中):
Powershell命令:
Set-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ -Name LocalAccountTokenFilterPolicy -Value 1
取自這裡:
基本上它的作用是禁用 UAC 進行遠端共享存取和維護,所以要小心。
這可能有助於更好地理解其含義,因此請確定您是否確實想要這樣做:
#note the \$ is actually needed!, i did read about Qouting the whole String "//CLIENTIP/C$" but i did not test that
mount -t cifs -o vers=2.0,username=WIN10Username,password=WIN10Password //CLIENTIP/C\$ MOUNTPOINT
備份電腦問題:
您將需要另一個專門用於 backuppc 的帳戶,該帳戶必須具有共用的讀取權限。
backuppcs smbclient 預設選項不包含 -m SMB2
backuppc 使用的指令是:
/usr/bin/smbclient \\\\CLIENT-NAME\\SHARENAME -U Win10Username -E -N -d 1 -c tarmode\ full -Tc -
將其更改為包含 -m SMB2
之後我仍然得到 NT_STATUS_ACCESS_DENIED:
session setup failed: NT_STATUS_ACCESS_DENIED
session setup failed: NT_STATUS_ACCESS_DENIED
tarExtract: Done: 0 errors, 0 filesExist, 0 sizeExist, 0 sizeExistComp, 0 filesTotal, 0 sizeTotal
手動執行此操作,並在 -U 之後新增密碼
/usr/bin/smbclient -m SMB2 \\\\CLIENT-NAME\\SHARENAME -U Win10Username WIN10Password -E -N -d 1 -c tarmode\ full -Tc -
作品
刪除 -N 會提示我它也可以使用的密碼。
由於我不想將其儲存在 backuppc 的設定檔中,因此我將在最終版本中使用憑證方法。
在嘗試手動找出 backuppc 命令和 smbclient 命令之間的差異後,我發現-N
連接期間會導致不同的行為。
沒有 -N 的工作解決方案(使用使用者名稱密碼或憑證文件,並不重要。非管理或管理共享也沒有改變任何內容)
/usr/bin/smbclient -m SMB2 \\\\CLIENTNAME\\test3 -U WIN10Username WIN10Password -E -d 5 -c tarmode\ full -Tc -
/usr/bin/smbclient -m SMB2 \\\\CLIENTNAME\\test3 -A /etc/samba/smb.cred -E -d 5 -c tarmode\ full -Tc -
cut
...
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x62088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x62088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
網域=[CLIENTNAME] 作業系統=[] 伺服器=[] ... 剪切
非工作版本-N
:
/usr/bin/smbclient -m SMB2 \\\\CLIENTNAME\\test3 -U WIN10Username WIN10Password -N -E -d 5 -c tarmode\ full -Tc -
/usr/bin/smbclient -m SMB2 \\\\CLIENTNAME\\test3 -A /etc/samba/smb.cred -N -E -d 5 -c tarmode\ full -Tc -
cut
...
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x62088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
SPNEGO login failed: Logon failure
...
cut
...
SPNEGO login failed: Access denied
session setup failed: NT_STATUS_ACCESS_DENIED
Backuppc Win10客戶端工作方案
鑑於上述所有信息,我可以使用以下 backuppc 選項備份 Win10 管理共享:
SmbClientFullCmd:
硬編碼:
$smbClientPath -m SMB2 \\$host\$shareName $I_option -U $userName WIN10Password -E -d 5 -c tarmode\ full -Tc$X_option - $fileList
I was unable to use the Password in SmbSharePasswd, but as this wasn't the desired output i did not dig deeper if i made an possible error here.
信用文件:
$smbClientPath -m SMB2 \\$host\$shareName $I_option -A /PATH/samb_creditfile -E -d 5 -c tarmode\ full -Tc$X_option - $fileList
Remember you need permissions for the backuppc user on that file.