Samba是一套使用SMB(Server Message Block)协议的应用程序, 通过支持这个协议, Samba允许Linux服务器与Windows系统之间进行通信,使跨平台的互访成为可能。Samba是在Linux及Unix上实现SMB(Server Message Block)协议的一个免费软件,由服务器及客户端程序构成。
Samba采用C/S模式, 其工作机制是让NetBIOS( Windows 网上邻居的通信协议)和SMB两个协议运行于TCP/IP通信协议之上,并且用NetBEUI协议让Windows在“网上邻居”中能浏览Linux服务器。
samba服务的搭建
客户的使用系统的不同也导致测试结果的不同.
linux系统客户端:
security = user or share
smbclient -L //192.168.7.113/westos 都是可以看到共享目录的,
二者不同之处在于, security = user 时
[root@redhat samba]# smbclient //192.168.7.113/westos
Enter root's password:
Anonymous login successful //系统提示登录samba服务成功,但是访问westos共享目录失败,匿名用户也是用户。
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 3.5.10-125.el6]
tree connect failed: NT_STATUS_access_DENIED
security = share
[root@redhat samba]# smbclient //192.168.7.113/westos
Enter root's password:
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 3.5.10-125.el6]
Server not using user level security and no password supplied. //不是服务的有效用户,虽然security = share,但是要支持密码登陆。相当于samba服务访问都没成功
tree connect failed: NT_STATUS_WRONG_PASSWORD
win的测试:
security = share 时
我们访问samba服务时,直接登陆成功,但是访问目录时,提示要密码。
security = user 时,当访问samba服务时就开始要密码,没密码不访问。
有没有这种感觉,linux和win的测试,貌似二者是相反的,刚好颠倒过。
Linux系统
当Public =yes 时:
security = user or share
匿名用户登陆都将成功。
[root@redhat samba]# smbclient //192.168.7.113/westos
Enter root's password:
Anonymous login successful
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 3.5.10-125.el6]
smb: > ^C
[root@redhat samba]# vim /etc/samba/smb.conf
[root@redhat samba]# /etc/init.d/smb restart
Shutting down SMB services: [ OK ]
Starting SMB services: [ OK ]
[root@redhat samba]# smbclient //192.168.7.113/westos
Enter root's password:
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 3.5.10-125.el6]
Server not using user level security and no password supplied.
smb: > ^C
win客户端:
当Public =yes 时:
security = share
匿名用户不需要密码用户名,直接登陆成功,访问共享目录也不需要密码用户名。
当Public =yes 时:
security = user
当你访问samba时,直接就会要用户名,密码,登陆都不成功,何况看到共享目录。
比较:
也就是说当当Public =yes 时:linux客户端就可以访问共享目录,不管security = user ro share.跟它都没关系。Win客户端只有security =share时,匿名用户才有权利去访问共享目录。
Samba的几个主要配置文件(/etc/samba)
smb.conf:最主要的配置文件,分为[global]和[Share Definitions]两个部分。
lmhosts:对应NetBIOS Name与该主机的IP,一般Samba在启动时就能捕捉到LAN中相关计算机NetBIOS Name对应的IP,因此,这个配置文件一般不用设置。
smbpasswd:这个文件默认不存在,它是Samba预设的使用者密码对应表。
Samba的几个主要命令
smbpasswd:用来设置Samba用户的帐号和密码。
smbclient:用来查看别的Linux主机的共享。也可以在自己的Samba主机上使用,用来查看设置是否成功。
smbmount:用来将Samba服务器共享的文档和目录挂载到自己的Linux主机上。
testparm:用来检查smb.conf是否有错误。
smb.conf的几个常用变量
①客户端变量
-----------------------------------------------------------------------------
%a | 客户端的体系结构(例如Samba,NT,Win98,或者Unknown)
%I | 客户端的IP地址(例如:192.168.220.100)
%m | 客户端的NetBios名
%M | 客户端的DNS名
------------------------------------------------------------------------------
②用户变量
------------------------------------------------------------------------------
%g | %u的基本组
%G | %U的基本组
%H | %u的Home目录
%u | 当前的unix用户名
%U | 被请求的客户端用户名(不总是被samba使用)
------------------------------------------------------------------------------
③共享变量
------------------------------------------------------------------------------
%p | 如果和%p不同,automounter的路径对应共享的根目录
%P | 当前共享的根目录
%S | 但前共享的名称
-------------------------------------------------------------------------------
④服务器变量
-------------------------------------------------------------------------------
%d | 当前服务器进程的ID
%h | Samba服务器的DNS主机名
%L | Samba服务器的netbios名
%N | Home目录服务器,来自automount的映射
%v | samba版本
-------------------------------------------------------------------------------
⑤其他变量
-------------------------------------------------------------------------------
%R | 经过协商的SMB协议
%T | 当前的日期和时间
四种安全等级
①security=share:用户访问Samba服务器不需要提供用户名和口令, 安全性能较低。
②security=user:Samba服务器默认的安全等级, 每一个共享目录只能被一定的用户访问, 并由Samba服务器负责检查账号和密码的正确性。
③security=server:服务器安全级别,依靠其他Windows NT/2000或Samba服务器来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。
④security=domain:域安全级别,使用主域控制器(PDC)来完成认证。