项目场景:
最近使用smbclient碰到3个问题,主要与smb的认证方式NTLM、NTLMv2,domain相关
问题描述:
1. 出现认证错误。猜测对方smb服务器为NT1版本
2. smbc_write 出现Invalid Argument
3. domain添加到smb url
解决方案:
问题1:smbclient会去读取/etc/samba/smb.conf,具体参考smb.conf
client NTLMv2 auth = no
cifs 挂载时,指定smb 的版本和认证方式
-o vers=1.0,username=<username>,password=password,sec=ntlm
修改samba的代码,使smb url可以动态调整ntlm的认证,在Option上面加上sec=ntlm
smb://hwp:"1qaz@WSZ"@192.168.8.157/ivtest/1_h264_1920x1080_8361923_20201103110314001.ts?sec=ntlm
samba-4.6.16代码修改如下
Date: Thu, 24 Dec 2020 11:37:37 +0800
Subject: [PATCH] dynamic set ntlm auth
---
source3/include/libsmbclient.h | 2 ++
source3/include/proto.h | 1 +
source3/libsmb/libsmb_context.c | 6 ++++++
source3/param/loadparm.c | 4 ++++
4 files changed, 13 insertions(+)
diff --git a/source3/include/libsmbclient.h b/source3/include/libsmbclient.h
index cf67b1d47a4..b0f431d9c5e 100644
--- a/source3/include/libsmbclient.h
+++ b/source3/include/libsmbclient.h
@@ -1102,6 +1102,8 @@ smbc_unlink_print_job_fn smbc_getFunctionUnlinkPrintJob(SMBCCTX *c);
void smbc_setFunctionUnlinkPr