1.1 Samba 概述
Samba主要用于Windows和Linux之间的文件共享,也一样用于Linux和Linux之间的共享文件;不过对于Linux和Linux之间共享文件有更好的网络文件系统NFS,NFS也是需要架设服务器的。我们可以通过samba架设一个功能非常强大的文件服务器,也可以将其架设成打印服务器提供本地和远程联机打印,甚至我们可以使用samba Server完全取代NT/2K/2K3中的域控制器,做域管理工作,使用也非常方便。
1.2 Samba 应用环境
文件和打印机共享:文件和打印机共享是Samba 的主要功能,SMB 进程实现资源共享,将文件和打印机发布到网络之中,以供用户可以访问。身份验证和权限设置:smbd服务支持user mode和domain mode等身份验证和权限设置模式,通过加密方式可以保护共享的文件和打印机。
名称解析:Samba通过nmbd服务可以搭建NBNS(NetBIOS Name Service)服务器,提供名称解析,将计算机的NetBIOS 名解析为IP 地址。
浏览服务:局域网中,Samba 服务器可以成为本地主浏览服务器(LMB),保存可用资源列表,当使用客户端访问Windows 网上邻居时,会提供浏览列表,显示共享目录、打印机等资源。
1.3 Samba 工作原理
Samba服务功能强大,这与其通信基于SMB协议有关。SMB不仅提供目录和打印机共享,还支持认证、权限设置。在早期,SMB 运行于NBT 协议(NetBIOS over TCP/IP )上,使用UDP 协议的137、138 及TCP 协议的139 端口,后期SMB 经过开发,可以直接运行于TCP/IP 协议上,没有额外的NBT 层,使用TCP 协议的445 端口。
(1)Samba 工作流程
当客户端访问服务器时,信息通过SMB 协议进行传输,其工作过程可以分成四个步骤:
步骤 1:协议协商
客户端在访问 Samba 服务器时,发送negprot 指令数据包,告知目标计算机其支持的SMB类型。Samba 服务器根据客户端的情况,选择最优的SMB 类型,并做出回应。
--------negprot 请求------->
客户端 服务器
<--------negprot 响应------
步骤 2:建立连接
当SMB类型确认后,客户端会发送session setup指令数据包,提交帐号和密码,请求与Samba服务器建立连接,如果客户端通过身份验证,Samba服务器会对session setup报文作出回应,并为
用户分配唯一的UID,在客户端与其通信时使用。
--------session setup &X 请求------->
客户端 服务器
<--------session setup &X 响应-------
步骤 3:访问共享资源
客户端访问Samba共享资源时,发送tree connect指令数据包,通知服务器需要访问的共享资源名,如果设置允许,Samba服务器会为每个客户端与共享资源连接分配TID, 客户端即可访问需要的共享资源。
--------tree connect &X 请求------->
客户端 服务器
<--------tree connect &X 响应-------
步骤 4:断开连接
共享使用完毕,客户端向服务器发送tree disconnect报文关闭共享,与服务器断开连接。
--------tree disconnect 请求------->
客户端 服务器
<--------tree disconnect 响应-------
(2)Samba 相关进程
Samba服务是由两个进程组成,分别是nmbd 和smbd。
nmbd:其功能是进行NetBIOS名解析(通过主机名进行访问),并提供浏览服务显示网络上的共享资源列表。port:137 138
smbd:其主要功能就是用来管理Samba服务器上的共享目录、打印机等,主要是针对网络上的共享资源进行管理的服务。当要访问服务器时,要查找共享文件,这时我们就要依靠smbd这个进程来管理数据传输(通过IP进行访问)。port:139 445 。现在一般都是使用smbd 来访问samba服务。nmbd服务可以不用启动。