一 Samba简介

1 samba 简介

早期的Unix系统中通过NFS让所有的Unix系统之间可以实现资源共享, 微软推出了SMB(server message block)通信协议让系统间可以实现资源共享, 由于Windows的SMB未公开,所以Unix与Windows 之间实现资源共享,基本只能通过FTP来实现,FTP尽管好用,带也有些不足,无法直接修改主机上面的档案数据,只能下载之后进行修改,如果要进行修改上传文件,也只能先下载,并再次上传,


Samba 这个自由软件的推出,让类Unix系统可以加入到Windows 网络中,利用SMB协议与windows 系统之间实现资源共享等相关功能, 实现了类Unix与Windows之间资源共享与访问。

2 NetBIOS 简介

SAMBA 这个文件系统是架构在NetBIOS这个通信协议上面所开发出来的

最早的IBM 发展出NetBios的目的是要让局域网络内少数计算机进行网络连接的一个通信协议,考虑到不是大型网络,NetBIOS是不能跨路由(router/getwat),早期的samba是想让Linux系统可以加入Windows的系统中来分享使用的档案数据,因此NetBIOS就是在其中发展出来的。


NetBIOS 是无法跨路由的,因此使用NetBIOS发展起来的服务器理论上是无法跨越路由的,但有了 NetBios OVER TCP/IP 技术

通过 NetBios OVER TCP/IP 技术,能够实现samba服务器跨网络的通信功能,但其实现主要还是在LAN环境中


NetBEUI 是 NETBIOS extended user interface的简写,是上述的升级版


NETBIOS 发展是在局域网内的快速数据交流,因而是定义在局域网中的,其没有TCP/IP之类的网络传输协议,也就不需要IP的设定,

NetBIOS 处理数据交流的方式:NETBIOS NAME
每一部主机必须要有不同的NetBIOS name才行,而档案数据就是在不同的NETBIOSNAME之间沟通的,


沟通步骤

1 想要登录进某个Windows主机使用它所提供的档案数据时,就必须加入该Windows主机群组,并且我们的机器也必须设定一个主机名,这个主机名是NETBIOS协议上的,我们成为NETBIOS NAME,在同一个群组当中,NETBIOSNAME 必须是独一无二的。

2 找到该主机名后,是否能够登录该对方主机或者取用资源,还需要看Windows主机有没有提供给我们相关的使用权限,如果允许登入,但没开放权限,则无法看到任何数据

二 Samba主要提供的功能及工作方式

1 功能

1 在类Unix与Windows之间实现资源共享(目录。打印机和ZIP、CDROM) 2 用户的认证和授权 3 使用WINS(Windows的名称解析服务)服务进行名称解析及浏览

2工作方式

Samba 的两个进程 Nmbd :此进程主要是nmb服务,使用的是UDP的137/138端口,主要进行NETBIOS名称解析,并提供浏览服务显示网络上的共享资源列表


Smbd :主要是smb服务,使用TCP的139 、445端口,主要管理Samba服务器上的共享目录、打印机等,是对网络上的共享资源进行管理的服务

3 分类

1 workgroup

Peer/peer (workgroup model ,对等模式)

相当于一对一的处理,没有共享的概念,其用户名和密码在各自的设备上,没有进行统一的管理和配置

适应场景:

1 小型局域网络 2 没有需要常常进行档案数据分享的网络环境 3 每个使用者都独自拥有该计算机的拥有权

2 domain (主控模式)

Domain model

使用将账号和密码都防止在一部主控计算机上,任何人想要使用任何计算机时,都需要在屏幕前方输入账号和密码,然后通过PDC 服务器标识后,才能给其相关的权限,不同的身份具有不同的权限

4 Samba服务器与客户端之间的交互流程

1 协议协商,客户端在访问Samba服务器时,发送negport命令包,告诉目标计算机器支持的SMB类型。Samba 服务器根据客户端的情况,选择最优的SMB类型,并作出应答


2 建立连接: 当SMB类型确认后,客户端发送session setup 命令数据包,提交账户信息,请求与Samba服务器建立连接,如果客户端通过身份验证,Samba服务器会对session setup 报文作出回应,并为用户分配唯一的UID,再客户端与其通讯


3 访问共享资源:客户端访问Samba 共享资源时,发送 tree connect 命令数据包,通知服务器需要访问的共享资源名,如果设置允许,Samba 服务器会为每个客户与共享资源的连接分配TID,客户端即可访问需要的共享资源


4 断开连接:共享完成后,客户端向服务器发送 tree disconnect 报文关闭共享。

四 安装和启动Samba服务器

五 配置Samba

1 创建Samba用户

此用户必须是Linux真实存在的用户

2 进行登录测试

3 配置客户端的登录测试

4 在客户端进行挂载操作

5 配置文件修改,修改工作组名称

6 不允许某些用户访问

注销则允许访问

7 配置文件共享

1 创建文件

2 配置配置文件

3 重启服务

4 查看文件共享情况

5 在共享文件夹下创建文件

6 开启文件夹的标签

7 进行测试

8 挂载

9 自动挂载的配置

10 设置guest用户

可以不用密码进行挂载并自动挂载

11 增加对共享文件的写功能

12 创建共享用户组

创建MySQL用户并将其加入admin组中使其可以访问共享文件

配置只有admin用户由此权限进行编辑,mysql用户无此权限

配置此组内的用户有此权限

配置管理用户使其可以访问,其对文件本身不具备访问权限,但在使用该用户挂载后可以进行任何操作

配置文件中间不能有空格

13 隐藏共享文件名

配置只有此用户可以挂载

14 配置其组内用户可以挂载

六 Samba 多用户挂载

1 安转软件cifs-utils 客户端安装并运行

七 扩展

1 comment : 对共享目录进行注释说明

2 writable :用户对共享目录是否可写,需要注意的是,即使这里设置为yes ,用户对Linux中对应目录没有写权限,也不能进行写操作

3 browseable : 设置用户是否可以浏览到该共享目录(将browseable 设置为no,目录将隐藏,但通过直接输入共享目录命令,仍可以访问该共享目录)

4 vaild users ; 可以访问共享目录的用户列表

5 invalid users : 禁止访问共享目录的用户列表

6 create mode : 在共享目录重创建文件时,对文件的权限进行设置,(如设置为0664)

7 diectory mode: 在共享目录中创建目录时设置权限属性

8 readonly: 设置共享目录为只读形式

9 public : 设置共享目录是否允许匿名访问

10 guest ok : 与 public相同

11 writable : 设置为yes,表示该共享目录允许写操作,与此选择项具有相同作用的还有write ol 选项

12 read only : 设置是否只读,若设置为 no ,与 writable = yes 的意思相同

13 read list ; 只能以读权限访问共享目录的用户列表

14 write list ; 具有写权限的用户列表,无论writable 和 read list 中设置的是什么,在选项设置中都局写权限