Samba是使用SMB(服务器消息块)协议的应用程序。通过支持这个协议,Samba允许Linux服务器和Windows系统之间的通信,使得跨平台访问成为可能。
Samba是一个在Linux和Unix上实现SMB(服务器消息块)协议的免费软件,由服务器和客户端程序组成。
Samba采用C/S模式,工作机制是让NetBIOS(Windows网上邻居的通信协议)和SMB运行在TCP/IP通信协议之上,使用NetBEUI协议让Windows浏览网上邻居的Linux服务器。
桑巴服务的构建
客户使用系统的不同也导致了测试结果的不同。
Linux系统客户端:
security=user or share
SMB client-L//192 . 168 . 7 . 113/westos可以看到共享目录。
它们之间的区别在于,当安全性=用户
[root@redhat samba]# smbclient //192.168.7.113/westos
Enter root's password:
匿名登录成功//系统提示登录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]
The server did not use user-level security and did not provide a password. //is not a valid user of the service, although security=sharing,
但是支持密码登录。相当于samba服务访问失败。
tree connect failed: NT_STATUS_WRONG_PASSWORD
Win的测试:
When safety=share
当我们访问samba服务时,我们成功登录,但是当我们访问目录时,我们被提示输入密码。
当security=user时,访问samba服务时会开始要求输入密码,没有密码不会访问。
有没有感觉linux和win的测试好像是相反的,只是颠倒了一下?
Linux系统
When 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
赢得客户:
When public=Yes:
security=share
匿名用户不需要密码用户名,登录成功,访问共享目录也不需要密码用户名。
When public=Yes:
security=user
当你访问samba时,你会直接询问你的用户名、密码和登录,更不用说看到共享目录了。
比较:
也就是说,当Public=yes时,不管security=user ro share,linux客户端都可以访问共享目录。跟它没关系。当Win客户端只有安全=共享时,
只有匿名用户有权访问共享目录。
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服务器负责检查账号和密码的正确性。
此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。
security=domain:域安全级别,使用主域控制器(PDC)来完成认证。