今天收到技术支持邮件,原文如下:由于最近需要测试打印功能,请协助把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
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"。然后挂载成功了。
那么找到原因了,在Linux下挂载的时候增加sec=ntlmv2,竟然也挂载成功了。
mount -t cifs -o username='lixshareusr',password='abc%1234',sec=ntlmv2,rw //10.0.60.112/sharetolinux /mnt
问题总结
遇见问题,换个思路是好的,一味的逃避,不是办法,总有问题是你避不开的,勇敢面对,冷静心细。还有就是基础知识一定要踏实。
领取专属 10元无门槛券
私享最新 技术干货