一、samba简介

1、概述:

对于windows的网上邻居来讲,共享文件的方式用的是SMB和CIFS协议以及NETBIOS协议Linux/Unix之间用的是NFS协议。但是Linux和Windows之间是不能共享的,所以澳大利亚国立大学的Andrew Tridgell,决定开发一款软件, 实现不同系统之间文件共享。即Samba诞生了。对于我们学习linux的同学来说,samba为我们在linux和window之间架起了一座桥梁,可以使我们在linux和window之间进行通信,最基本的就是我们可以进行文件拷贝,以及不同系统之间资源共享。

2、应用场景:

文件和打印机共享:smb进程实现资源共享,将文件和打印机发布到网络中,以供用户访问。

身份验证和权限设置:smbd服务服务支持user mode 以及domain mode 等身份验证和权限设置模式,通过加密来保护共享的文件。

名称解析:samba通过nmbd搭建NBNS(netBIOS name service)进行名称解析,将计算机的netBIOS解析成对应的IP地址

浏览服务:局域网中,samba服务器可以成为本地主浏览服务器,保存资源列表,保存可用资源列表。

3、工作原理:

当客户端访问服务器时,通过smb协议进行传输。具体流程如下:

(1)、协议协商:

当客户端访问smb服务器的时候,会发送一条negprot指令数据包,告其计算机支持那种smb,smb服务器根据客户端的请求,选择最优的smb作为回应:

 

客户端---------------发negprot请求-->---------------服务器端

客户端------------<--发negprot回应-----------------服务器端

(2)、建议连接

当确定了smb类型后,客户端会发送会话,建立指令数据包,提交账号和密码,请求与smb服务器之间建立连接,如果身份验证通过,smb服务器会对会话建立报文做出回应,并为用户分配一个UID,供用户与其通信时使用

客户端---------------发session setup请求-->---------------服务器端

客户端------------<--发session setup回应-----------------服务器端

(3)、访问共享资源

客户端访问服务器资源时,会发送tree connect 指令,通知服务器需要防问的共享资源名,如果设置允许,服务器会为每个客户端与共享资源连接之间分配TID,这样客户端就可以访问需要的共享资源

 

客户端---------------发tree connect请求-->---------------服务器端

 

客户端------------<--发tree connect回应-----------------服务器端

(4)、断开连接

当共享使用完毕后,客户端向服务器发送tree disconnect 报文关闭共享,与服务器断开连接

客户端---------------发tree disconnect请求-->---------------服务器端

 

客户端------------<--发tree disconnect回应-----------------服务器端

 

 

二、在linux配置举例

采用共享一个目录,使用用户名和密码登录后才可以访问,要求可以读写

步骤:

1、安装samba:

yum install -y samba samba-client

安装完成后可以采用下面命令查看:

rpm -qa samba    #qa为(query all)的缩写

2、配置文件/etc/samba/smb.conf

进行配置:

编辑samba的配置文件:

vim /etc/samba/smb.conf

找到[global]

将 security = share

改为 security = user

注释 [home] 模块

在末尾添加如下模块:

添加:

[myshare]

         comment = share for users

         path = /samba

         browseable = yes

         writable = yes

         public = no

 

#public = no 即禁止匿名账号登陆

 

保存配置文件,创建目录:

mkdir /samba

chmod 777 /samba

创建系统账号:

useradd user1

useradd user2

添加user1user2samba账户:

pdbedit -a user1

#根据提示输入密码

pdbedit -a user2

列出samba所有的账号:

pdbedit -L

重启服务:

service smb restart

3、进行测试:

在linux上ifconfig,将得到IP地址进行测试:例如我PC:

浏览器输入:

file://192.168.89.131/myshare/

或者在windows的运行里 输入:

\\192.168.89.131

-------------------------配置完成--------------------------------

三、总结

以上是对samba的简单介绍以及配置。