我想通过 SMB 与 Windows 7 机器共享 Ubuntu 20.04 上的私人文件。共享必须受密码保护。
在 Ubuntu 的文件应用程序中,我右键单击文件夹,选择“本地网络共享”并选中“共享此文件夹”。
Windows 计算机看到共享文件夹。我双击,输入用户名和密码,然后按 Enter。但它显示“登录失败:未知用户名或密码错误”。
我尝试了不同的域名:WORKGROUP
、、Unix User
Ubuntu 机器的主机名、空域。没有成功。
我尝试使用 在 Samba DB 中创建用户并设置密码smbpasswd
。没有成功。
我在网上找到的所有手册都展示了如何创建访客共享,但这不是我需要的。
我可以看到以下共享net usershare
:
gsovetov@gsovetov-mate:~$ sudo net usershare info --long
[develop]
path=/home/gsovetov/develop
comment=
usershare_acl=Everyone:R,Unix User\gsovetov:F,
guest_ok=n
我可以从同一台机器连接它:
gsovetov@gsovetov-mate:~$ smbclient '\\192.168.1.252\develop' -U gsovetov%SecurePassword
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Sat Jun 20 12:50:34 2020
.. D 0 Thu Jul 16 19:28:08 2020
qweqweqwe D 0 Thu Apr 23 20:34:23 2020
asdasdasdasd D 0 Thu Apr 23 19:24:28 2020
请帮助我从 Windows 访问共享。
答案1
解决方案
问题在于,Windows 7 计算机尝试使用 NTLMv1 进行身份验证,而 Ubuntu 20.04 已禁用该功能,转而使用 NTLMv2。
修复方法是在 Windows 计算机上强制使用 NTLMv2 进行客户端连接:设置HKLM\SYSTEM\CurrentControlSet\Control\Lsa!LmCompatibilityLevel
为5
或3
:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-2000-server/cc960646(v=technet.10)。
另一个不太安全的修复方法是使用 启用 NTLMv1 /etc/samba/smb.conf
。ntlm auth = yes
请注意,NTLMv2 对重放攻击具有额外的保护:https://miriamxyra.com/2017/11/08/stop-using-lan-manager-and-ntlmv1/。
我如何找到它
/etc/samba/smb.conf
使用设置日志级别log level = 5
。虽然,log level = 2
这已经足够了。比较了 Windows 7 连接失败的日志和 Ubuntu 20.04 本身连接成功的日志:
从 Windows:
[2020/07/17 12:11:17.453906, 2] ../../libcli/auth/ntlm_check.c:429(ntlm_password_check)
ntlm_password_check: NTLMv1 passwords NOT PERMITTED for user gsovetov
[2020/07/17 12:11:17.454843, 2] ../../source3/auth/auth.c:343(auth_check_ntlm_password)
check_ntlm_password: Authentication for user [gsovetov] -> [gsovetov] FAILED with error NT_STATUS_WRONG_PASSWORD, authoritative=1
[2020/07/17 12:11:17.454887, 2] ../../auth/auth_log.c:635(log_authentication_event_human_readable)
Auth: [SMB2,(null)] user [WORKGROUP]\[gsovetov] at [Fri, 17 Jul 2020 12:11:17.454866 MSK] with [NTLMv1] status [NT_STATUS_WRONG_PASSWORD] workstation [RHN] remote host [ipv4:192.168.1.72:49609] mapped to [WORKGROUP]\[gsovetov]. local host [ipv4:192.168.1.252:445]
从 Ubuntu:
[2020/07/17 12:09:36.639590, 3] ../../auth/auth_log.c:635(log_authentication_event_human_readable)
Auth: [SMB2,(null)] user [WORKGROUP]\[gsovetov] at [Fri, 17 Jul 2020 12:09:36.639576 MSK] with [NTLMv2] status [NT_STATUS_OK] workstation [GSOVETOV-MATE] remote host [ipv4:192.168.1.252:55250] became [GSOVETOV-MATE]\[gsovetov] [S-1-5-21-1148495091-2039333689-3294533319-1001]. local host [ipv4:192.168.1.252:445]
{"timestamp": "2020-07-17T12:09:36.639644+0300", "type": "Authentication", "Authentication": {"version": {"major": 1, "minor": 2}, "eventId": 4624, "logonId": "0", "logonType": 3, "status": "NT_STATUS_OK", "localAddress": "ipv4:192.168.1.252:445", "remoteAddress": "ipv4:192.168.1.252:55250", "serviceDescription": "SMB2", "authDescription": null, "clientDomain": "WORKGROUP", "clientAccount": "gsovetov", "workstation": "GSOVETOV-MATE", "becameAccount": "gsovetov", "becameDomain": "GSOVETOV-MATE", "becameSid": "S-1-5-21-1148495091-2039333689-3294533319-1001", "mappedAccount": "gsovetov", "mappedDomain": "WORKGROUP", "netlogonComputer": null, "netlogonTrustAccount": null, "netlogonNegotiateFlags": "0x00000000", "netlogonSecureChannelType": 0, "netlogonTrustAccountSid": null, "passwordType": "NTLMv2", "duration": 7842}}
找到了如何在 Samba 中为传入连接启用 NTLMv1:https://nelsonslog.wordpress.com/2018/08/31/ubuntu-18-samba-and-ntlmv1/。
找到如何在 Windows 上为客户端连接启用 NTLMv2:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-2000-server/cc960646(v=technet.10). 建议值为
5
:https://support.microsoft.com/en-us/help/4090105/how-to-audit-domain-controller-use-of-ntlmv1-and-ntlmv2。(我不确定默认值是多少。可能是我几年前更改了这个设置然后就忘记了。)
答案2
如果您在连接 Ubuntu 机器时遇到问题,可以在 Windows 机器上设置 SMB 共享并以此方式传输文件。
我以前也这样做过,在新旧电脑之间传输文件。可以找到有关如何操作的指南这里。