Windows 10 無法連線至 Linux Samba 共用(SMB1/CIFS 除外)

Windows 10 無法連線至 Linux Samba 共用(SMB1/CIFS 除外)

我在 Windows 10 下存取某些 Linux Samba 共享時遇到問題,並出現以下錯誤:

Check the spelling of the name. Otherwise, there might be a problem with your network. To try to identify and resolve network problems click Diagnose.
Error code: 0x80070035
The network path was not found

我可以從僅使用 SMB1/CIFS 的舊版 openSUSE 12.1 成功瀏覽,但不能從較新的 openSUSE Leap 15 成功瀏覽,除非我強制NT1協定(即 SMB1/CIFS)在其一側,在/etc/samba/smb.conf 全域部分:

[global]
...
min protocol = NT1
max protocol = NT1

有關信息,預設情況下最小協定蘭曼1最大協議中小企業3,該範圍包括NT1協議(參見SMB 協定最小值最大值可用嗎?):

$ testparm --parameter-name="min protocol"
[...]
LANMAN1
$ testparm --parameter-name="max protocol"
[...]
SMB3

我可以從另一台 Linux 電腦存取這些共用資料夾,而無需使用以下命令強制協議,例如我可以列出資料夾:

smbclient -L MyLeap15Computer -N

或使用以下命令連接到 tmp 共享資料夾:

smbclient //MyLeap15Computer /tmp -N

我還確認 SMB2 和 3 實際上處於活動狀態如何在 Windows 中偵測、啟用和停用 SMBv1、SMBv2 和 SMBv3,並且還能夠從另一台 Windows 10 存取它們。

無論如何,從技術上講,我可以透過強制NT1 協定來存取我的共用資料夾,但由於SMB1/CIFS 中存在安全性問題(然後也在Windows 10 中停用它),所以我希望能夠從SMB2 或SMB3 訪問它們),另外,由於我可以從另一個Windows 10 訪問它們而不強制使用此協議,因此它應該是Windows 配置中的某些內容,但我無法查看哪一個,因為所有內容在兩者上都顯示為活動狀態。

最後,即使問題似乎更多地出現在客戶端,這裡是伺服器配置,/etc/samba/smb.conf不強迫NT1協定(此配置接受訪客用戶,則無需提供連線憑證):

[global]
workgroup = WORKGROUP
passdb backend = tdbsam
printing = cups
printcap name = cups
printcap cache time = 750
cups options = raw
map to guest = bad user
logon path = \\%L\profiles\.msprofile
logon home = \\%L\%U\.9xprofile
logon drive = P:
usershare allow guests = yes
usershare max shares = 100
winbind offline logon = yes
winbind refresh tickets = yes
create mask = 777
directory mask = 777
delete readonly = yes

[tmp]
comment = Temp folder
path = /tmp
browseable = yes
writable = yes
read only = no
guest ok = yes
mangled names = no

編輯:這裡是建議@JW0914之後的更多信息,建議的內容不起作用,但我在服務器日誌中發現了一些有趣的東西(添加日誌等級 = 3/etc/samba/smb.conf 全域部分然後看著/var/log/samba/log.smbd嘗試連線後):

  check_ntlm_password:  Checking password for unmapped user [DOMAIN]\[USER]@[Windows10Computer] with the new password interface
[2020/02/05 14:21:23.845849,  3] ../source3/auth/auth.c:192(auth_check_ntlm_password)
  check_ntlm_password:  mapped user is: [DOMAIN]\[USER]@[Windows10Computer]
[2020/02/05 14:21:23.845879,  3] ../source3/auth/check_samsec.c:399(check_sam_security)
  check_sam_security: Couldn't find user 'USER' in passdb.
[2020/02/05 14:21:23.845890,  2] ../source3/auth/auth.c:332(auth_check_ntlm_password)
  check_ntlm_password:  Authentication for user [USER] -> [USER] FAILED with error NT_STATUS_NO_SUCH_USER, authoritative=1
[2020/02/05 14:21:23.845910,  2] ../auth/auth_log.c:760(log_authentication_event_human_readable)
  Auth: [SMB2,(null)] user [DOMAIN]\[USER] at [Wed, 05 Feb 2020 14:21:23.845900 CET] with [NTLMv2] status [NT_STATUS_NO_SUCH_USER] workstation [Windows10Computer] remote host [ipv4:172.168.0.69:56937] mapped to [DOMAIN]\[USER]. local host [ipv4:172.168.0.99:445]
[...]
  No such user USER [DOMAIN] - using guest account
[2020/02/05 14:21:23.847182,  3] ../source3/smbd/server_exit.c:244(exit_server_common)
  Server exit (NT_STATUS_CONNECTION_RESET)

我看到伺服器正在嘗試對登入 Windows 10 的用戶進行身份驗證,但由於不存在,它會回退到來賓用戶,但連線會在之後重置。另一方面,使用它正在工作的計算機,當使用相同的網域/用戶登入並成功訪問時,我有完全相同的日誌(不同的計算機名稱和IP),但最後:

  No such user USER [DOMAIN] - using guest account
[2020/02/05 14:43:21.147396,  3] ../lib/util/access.c:365(allow_access)
  Allowed connection from 192.168.0.77 (192.168.0.77)

我正在調查它,但如果有人知道正在發生的事情,我會很高興。

編輯2:快速查看後我找到了解決方法Windows 10 秋季更新和 Samba 訪客帳戶但當嘗試時淨使用命令我有以下問題,那麼這是我的公司,可能在較新的計算機上更改了安全性(使用的兩者都在同一域中,但不起作用的來自較​​新的安裝):

You can't access this shared folder because your organization's security policies block unauthenticated guest access. These policies help protect your PC from unsafe or malicious devices on the network.

謝謝

答案1

就我而言(Windows 10、CentOS 6 上的古老 Samba 4.2.10),有幫助的是將最小協定設為 SMB2,將最大協定設為 SMB3:

[global]

min protocol = SMB2
max protocol = SMB3

client min protocol = SMB2
client max protocol = SMB3

client ipc min protocol = SMB2
client ipc max protocol = SMB3

server min protocol = SMB2
server max protocol = SMB3

進而將共用連接為網路磁碟機 ( Explorer -> Home -> Easy access -> Map as drive),輸入共用名稱 ( \\1.2.3.4\ShareName),勾選“使用不同憑證連接”,然後選擇“其他”,然後按下列格式輸入使用者名稱DOMAIN\username

當嘗試存取資源管理器中的共用時,它永遠不會要求提供憑證,也無法指定使用者名稱net use \\shareserver\data /user:testuser(出現系統錯誤 58)。

答案2

跑步smbpasswd -a user在這裡至關重要!

我的跑步smb.conf

[global]
    client max protocol = SMB3
    name resolve order = wins lmhosts host bcast
    security = USER
    username map = /etc/samba/smbusers
    idmap config * : backend = tdb

[rootfs]
    create mask = 0644
    force group = root
    force user = root
    path = /
    read only = No

答案3

最後,感謝由於組織的安全策略而無法存取共用資料夾,我找到了一種方法來覆蓋它:

  • regedit去 到HKLM\SOFTWARE\Policies\Microsoft\Windows
  • 建立一個新的 Key LanmanWorkstation,並在其中建立一個AllowInsecureGuestAuth以 value命名的新 D​​WORD1
  • 重啟

當然,未經貴公司批准,我這樣做只是為了測試,但我正在與我們的 IT 部門合作,看看我們如何管理這一點。

答案4

就我而言,停用連接埠 139/TCP 上的連線對 Windows 10 用戶端首次連線到 samba Ubuntu 20.04 時發生錯誤 0x80070035 有很大幫助

[global]
...
smb ports = 445
...

現在,從我的家用 Windows 10 PC 到 samba 伺服器的連線比以往任何時候都快。

但我真的不知道這會帶來哪些副作用。

相關內容