Den*_*lte 4 debian samba windows-10
环境:
带有 Debian 9.3 的 Linux X86 服务器
内核: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 注册表来启用 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
Run Code Online (Sandbox Code Playgroud)
我如何让它与 SMB2 或 SMB3 协议一起工作?
Howto 的答案包括多个部分,因为情况可能会有所不同,具体取决于您的需要。
我通过各种搜索包含了我发现(或相信已经找到)的所有内容,这些搜索帮助我解决了我的直接问题。
原来我的内核似乎不直接支持 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, debian@alpenjodel.de 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.
Run Code Online (Sandbox Code Playgroud)
根据我的研究,它也不在扩展向后移植中(cifs-utils 支持 4.11 的内核更改?)
https://packages.debian.org/stretch-backports/allpackages
Run Code Online (Sandbox Code Playgroud)
但是,我不确定 backport 部分,因为有更新的内核,但就我而言,我不会为此功能升级到 backport 内核,所以我在这里停了下来。
我不太清楚如何让 smbtree 与 SMB3 一起工作,尽管我在上面发现了这个问题,但我完全放弃了 SMB3 的想法。
https://www.samba.org/samba/docs/current/man-html/smbtree.1.html
smbclient 的 smb 协议的默认版本是
SMB1
这在 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}
Run Code Online (Sandbox Code Playgroud)
使能够:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 –Force
Run Code Online (Sandbox Code Playgroud)
禁用:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force
Run Code Online (Sandbox Code Playgroud)
您可能需要更改 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/
Run Code Online (Sandbox Code Playgroud)
到
smbclient -m SMB2 -U WIN10Username -L //Client/
Run Code Online (Sandbox Code Playgroud)
可让您查看该客户的份额。
作为控制台实际访问它的 mountparam :
mount -t cifs -o vers=2.0,username=WIN10Username,password=WIN10Password //CLIENTIP/TESTSHARE MOUNTPOINT
Run Code Online (Sandbox Code Playgroud)
或作为 /etc/fstab 条目(启动时不自动挂载!)
//CLIENTIP/TESTSHARE /MOUNTPOINT cifs vers=2.0,username=WIN10Username,password=WIN10Password 0 0
Run Code Online (Sandbox Code Playgroud)
对于管理共享,您必须进行一项额外的注册表更改(如果您不在域中):
Powershell 命令:
Set-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ -Name LocalAccountTokenFilterPolicy -Value 1
Run Code Online (Sandbox Code Playgroud)
取自这里:
基本上它的作用是禁用 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
Run Code Online (Sandbox Code Playgroud)
您将需要另一个特定于 backuppc 的帐户,该帐户必须具有共享的读取权限。
backuppcs smbclient 默认选项不包括 -m SMB2
backuppc 使用的命令是:
/usr/bin/smbclient \\\\CLIENT-NAME\\SHARENAME -U Win10Username -E -N -d 1 -c tarmode\ full -Tc -
Run Code Online (Sandbox Code Playgroud)
将其更改为包括 -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
Run Code Online (Sandbox Code Playgroud)
在 -U 后添加密码手动执行
/usr/bin/smbclient -m SMB2 \\\\CLIENT-NAME\\SHARENAME -U Win10Username WIN10Password -E -N -d 1 -c tarmode\ full -Tc -
Run Code Online (Sandbox Code Playgroud)
作品
删除 -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
Run Code Online (Sandbox Code Playgroud)
域=[CLIENTNAME] OS=[] Server=[] ... cut
非工作版本-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
Run Code Online (Sandbox Code Playgroud)
鉴于以上所有信息,我可以使用以下 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.
Run Code Online (Sandbox Code Playgroud)
信用文件:
$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.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16985 次 |
| 最近记录: |