Windows2003不能访问samba及Linux不能挂载共享文件夹中NTLMv2的作用

  • A+
所属分类:日志

今天收到技术支持邮件,原文如下:由于最近需要测试打印功能,请协助把192.168.0.1服务器的/TESTOUT目录共享到10.0.0.1FTP服务器上,谢谢。

前期沟通一直不顺畅,开发的电话一直没有人接听。于是,按照字面意思,将linux上的文件夹共享到Windows下,考虑用samba实现。

一般使用SMB(Server Message Block)协议共享文件,都是客户机或是服务器是windows,才会使用。而samba是在Linux上实现SMB协议的自由软件。另外还使用到一个协议CIFS(Common Internet File System)通用的互联网文件系统,是基于SMB协议开发的文件共享协议。可以看做是增强SMB协议跨平台,通用性的协议。服务器和客户机都是RHEL7大致配置过程如下。

RHEL7服务器配置Samba服务器


1,使用yum来安装samba

yum install samba

2,创建samba服务器使用用户

useradd sam

3,将sam用户添加到samba

smbpasswd -a sam

注:  
  -a:向smbpasswd文件中添加用户;

-c:指定samba的配置文件;

-x:从smbpasswd文件中删除用户;

-d:在smbpasswd文件中禁用指定的用户;

-e:在smbpasswd文件中激活指定的用户;

-n:将指定的用户的密码置空。

4,设置samba目录权限

chmod o+w /TESTOUT 或者 setfacl -m u:sam:rw /TESTOUT

5,设置selinux给目录加上samba的selinux的标签(samba_share_t)。这个在配置文件里面描述有说到。

chcon -t samba_share_t /TESTOUT

6,修改配置文件,一般默认在/etc/samba/smb.conf

7,重启服务后,在Windows2003尝试访问共享磁盘

问题出现了

无论还多少种姿势,Windows一直提示密码错误,使用window7/10/2008挂载均无问题。

既然,这种方法行不通,我们换一种方式来解决这个问题,共享一个window2003下的文件夹,挂载到Linux下,可以达到一样的使用效果,这样的结果无非是使用的空间为Windows服务器的。不过,也不是频繁读写的数据,问题不大。

1,在Windows2003端设置共享文件夹,配置好权限,分配好用户。

2,在Linux下挂载该Windows2003共享的文件夹。

问题出现了

# mount -t cifs -o username='lixshareusr',password='abc%1234' //10.0.60.112/sharetolinux /mnt

mount error(13): Permission denied

Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

然后,一脸懵逼,看来问题是绕不过去了。那就尝试解决吧。

解决思路

从Linux换到Windows配置方法肯定是没有问题,先给自己一个肯定。配置没有问题就出现在了验证上,那挂载个共享文件夹所使用的用户名及密码会涉及到哪里呢?

突然间临机一动,Windows7访问XP不是也会出现怎么输入密码也对的情况吗?那是由于Vista之后的windows系统(包括win7)强制使用NTLMv2认证,而winxp默认支持LM & NTLM,那这个问题会不会也是由于这个导致的呢?

于是,运行gpedit.msc,本地计算机组策略--Windows设置--安全设置--本地策略--安全策略--网络安全:LAN管理器身份验证级别--设置为"send NTLMv2 responses only\refuse LM & NTLM"。然后挂载成功了。

注:  
  此设置会影响运行 Windows 2000 Server、Windows 2000 Professional、Windows XP Professional 以及 Windows Server 2003 家族的计算机与运行 Windows NT 4.0 或更早版本的计算机通过网络进行通信的能力。例如,截至本次编写,运行 Windows NT 4.0 SP4 或更早版本的计算机尚不支持 NTLMv2。运行 Windows 95 和 Windows 98 的计算机尚不支持 NTLM。

默认值:

Windows 2000 以及 Windows XP: 发送 LM & NTLM 响应

Windows Server 2003: 仅发送 NTLM 响应

Windows Vista、Windows Server 2008、Windows 7 以及 Windows Server 2008 R2: 仅发送 NTLMv2 响应

Windows2003不能访问samba及Linux不能挂载共享文件夹中NTLMv2的作用

那么找到原因了,在Linux下挂载的时候增加sec=ntlmv2,竟然也挂载成功了。

mount -t cifs -o username='lixshareusr',password='abc%1234',sec=ntlmv2,rw //10.0.60.112/sharetolinux /mnt

注:  
  在samba配置中,有一个参数为"client ntlmv2 auth = yes"这个改为no,应该也可以解决吧。只是自己没有理解更透彻。

问题总结


遇见问题,换个思路是好的,一味的逃避,不是办法,总有问题是你避不开的,勇敢面对,冷静心细。还有就是基础知识一定要踏实。

weinxin
付生保个人博客
一个运维工程师的自媒体个人博客网站。也是关注IT技术学习和经验分享的原创独立自媒体个人博客。
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: