全部博文(685)
分类: LINUX
2014-07-29 19:48:51
===================================================
Samaba常见的故障排除
1.限定用户访问无效
管理员限定了只有用户user1才可以访问共享目录/sharedoc,测试时却发现用户user2也可以访问,甚至所有的用户都可以访问!这是一个很容易出错的问题,我们看看在Samba配置文件/etc/samba/smb.conf中的相应设置段:
[sharedoc]
path=/sharedoc
valid user=user1
writable=yes
乍一看没什么问题,用testparm工具测试一下看看:
#testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[sharedoc]"
Unknown parameter encountered: "valid user"
Ignoring unknown parameter "valid user"
.......
[sharedoc]
path=/sharedoc
read only=No
testparm是Samba提供的一个十分有用的测试工具,它除显示Samba所有配置参数默认值外,还能检测参数的实际取值,并与Samba管理员所设置的取值进行对比,检测smb.conf文件有没有包含任何无效参数。
通过测试发现,设置共享资源时,参数“valid users”少写了个"s“ ,变成了"valid user",结果在读取配置文件时检测为未知参数并忽略了它,这样这条参数就无效了,也就相当于没有设置有效用户,则默认共享目录为所有用户都可以访问,就出现了前面提到的问题。可见如果不小心设置错误,后果是相当严重的。
Samba的配置选项语法要求严格,建议配置好后用testparm检测一下看看是否有语法错误,以免发生此种现象。
2.用户权限设定无效
在解决了限定用户的问题,又发现明明设置了"writable=yes",赋予user1写权限,但user1在Windows客户端却无法对这个共享目录进行写操作。
这里有个概念问题,尽管Samba授予用户user1对共享资源具有写权限,但底层Linux系统许可不允许user1在共享资源上添加文件或目录。这时,唯有更改该目录的Linux文件权限设置,更改完成后,才可以进行前述的写入操作。也就是说,Linux系统中用户user1对此目录的权限与Samba服务中授予用户user1对此目录的操作权限要取一个交集!
观察共享目录/sharedoc的权限:
#ls -ld /sharedoc
drwxr-xr-x 2 root root 4096 2月 6 23:54 /sharedoc
在根目录下只有root只有写操作,root创建的目录/sharedoc自然所有者为root,所属组为root管理员,看到用户user1并不是所属组的成员更不是所有者,属于其他人(others),其他成员只具备"r-x"即可读可执行的权限,并不具备写权限,所以即便Samba中授权用户user1有写权限也无济于事。
如果要授予user1可以进行写操作,最简单的办法就是赋予其他人对目录具备写权限:
#chmod o+w /sharedoc
正确的解决方法最好是将设置权限的用户加入到目录对应的组中,对组授权,进行统一管理。
3.解决中文乱码问题
在Windows中看到Linux的共享文件和目录中文都显示乱码。
要解决这个问题,首先执行命令locale查看一下系统的字符集:
#locale
LANG=zh_CN.GB18030
LC_CTYPE="zh_CN.GB18030"
LC_NUMERIC="zh_CN.GB18030"
LC_TIME="zh_CN.GB18030"
.........
然后根据locale查到的字符集设置,修改配置文件smb.conf中的"[Global]"全局参数设置段:
(1)如果locale是zh_CN.UTF-8,添加如下三行设置:
display charset=UTF-8
unix charset=UTF-8
dos charset=UTF-8
(2)如果locale是zh_CN.GBK、zh_CN.gb2312或zh_CN.GB18030,添加如下三行设置:
display charset=cp936
unix charset=cp936
dos charset=cp936
重新启动Samba服务,则无论从Windows网上邻居还是直接用DOS命令查询,均可显示正常中文。
4.如何不显示隐藏文件
如果访问宿主目录,那些以"."开头的隐藏文件都显示得一清二楚,那么就有可能一个误操作把重要的配置文件删除了,这是很危险的。
要让隐藏文件不显示,需要在Samba配置文件的[homes]段添加如下设置:
veto files=/.*/
"veto files"参数为设定禁止文件,指定了既看不见又不能访问的文件和目录列表,列表中每个条目必须用斜杠(/)分开,星号(*)和问号(?)通配符能够用于指定多个文件和目录。所以"/.*/"就表示禁止所有以"."开头的文件。
同时还可以做其他一些限定,如Samba所有共享目录中都禁止显示包含词Windows的任何文件,以".exe"结尾的任何文件和包含词bill的任何目录,可以在[Global]段添加如下行:
veto files=*.exe
veto files=
这样设置,第一行的禁止显示隐藏文件将不能生效,必须写成:
veto files=/.*
(2)设置"veto files"参数会影响Samba的性能,因为在列出文件和查询期间,扫描文件和目录时,为了匹配,Samba将被迫搜寻检查所有的文件和目录。
Samba的故障一般排除方法如下(参考):
1.确定故障的症状。可能会有人告诉你症状或你观察到第一手的症状。
2.因为涉及的是网络系统,确定故障发生在本地还是远程,症状经常会帮助你做决定,或建议能够先进行测试,以便决定。
3.决定了故障所在的位置后,就集中用一套标准测试来确定故障的原因,并尝试消除症状,反复进行,直到解决问题。
有关诊断Samba和Windows客户之间故障的工具:
smbclient:检验可以访问的Samba服务器以及要求的共享已被定义。
smbstatus:检查水正对Samba服务器打开连接,在访问什么共享。
nmblookup:检测网络上的注册名称。
DOS net view命令:从Windows系统检查服务器上都提供哪些共享。
DOS netstat:检查NetBIOS名称、适配器状态信息等。
tcpdump:捕获网络文件信息包,检查Windows客户端和服务器的对话。
Ethereal:详细分析信息包,检查Windows客户端和Samba之间出现的故障。
samba服务器配置完成后,在win7操作系统中还是无法实现 文件夹的共享,这是什么原因呢?
默认情况下,Windows 7无法正常访问NAS或者Samba服务器上的共享文件夹。原因在于从Vista开始,微软默认只采用NTLM v2协议的认证回应消息了,而目前的NAS系统和Samba还只支持LM或者NTLM。
解决办法:修改本地安全策略或直接修改注册表
1、修改本地安全策略
运行secpol.msc打开“本地安全策略”窗体,依次点开“本地策略”-》“安全选项”,修改“网络安全: LAN 管理器身份验证级别”的值为“发送 LM 和 NTLM – 如果已协商,则使用NTLMv2 会话安全”,一路确定即可。如下图1和图2所示——
2、修改注册表
修改 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa下的LmCompatibilityLevel的值为1。