一、简介
1.1 Samba的起源
对于windows的网上邻居来讲,共享文件的方式用的是SMB和CIFS协议以及NETBIOS协议Linux/Unix之间用的是NFS协议。
但是Linux和Windows之间是不能共享的,所以澳大利亚国立大学的Andrew Tridgell,决定开发一款软件,这款软件就是为了实现不同的系统之间互相共享文件的,于是一款叫做SMB的软件横空出世了,但是这个名字不能被注册成商标,因为已经有SMB协议了,于是作者给名字上加了两个A,就成了我们即将使用的功能强的文件共享服务器: SAMBA。
1.2 什么是Samba
Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。后来微软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能,这样一来,使得Samba具有了更强大的功能。
1.3 Samba的功能
Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。
1.4 Samba的工作原理
SMB是基于客户机/服务器型的协议,因而一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端,例如,一台在Linux 下已经架设好的Samba服务器,windows客户端就可以通过SMB协议共享Samba服务器上的资源文件,同时,Samba服务器也可以访问网络中 其它windows系统或者Linux系统共享出来的文件。
事实上, 就像 NFS 是架构在 RPC Server 上面一样, SAMBA 这个文件系统是架构在 NetBIOS (Network Basic Input/Output System, NetBIOS) 这个通讯协议上面所开发出来的。
Samba在windows下使用的是NetBIOS协议,如果你要使用Linux下共享出来的文件,请确认你的windows系统下是否安装了NetBIOS协议。
组成Samba运行的有两个服务,一个是SMB,另一个是NMB;SMB是Samba 的核心启动服务,主要负责建立 Linux Samba服务器与Samba客户机之间的对话, 验证用户身份并提供对文件和打印系统的访问,只有SMB服务启动,才能实现文件的共享,监听139 TCP端口;而NMB服务是负责解析用的,类似与DNS实现的功能,NMB可以把Linux系统共享的工作组名称与其IP对应起来,如果NMB服务没有启动,就只能通过IP来访问共享文件,监听137和138 UDP端口。
1.5 Samba使用的 damons
NetBIOS 机器间的沟通
取得对方主机的NetBIOS name 定位该主机所在:
利用对方给予权限存取可用资源
SAMBA 使用下面两个服务来控制上面两步骤,分别是:
nmbd
- 这个daemon是用来管理工作组,NetBIOS name等等的解析。
- 主要利用 UDP 协议开启 port 137 138 来负责名称解析的任务。
smbd
- 这个daemon主要用来管理SAMBA主机分享的目录,档案与打印机等等。
- 主要利用可靠的TCP协议来传输数据,开放端口为139.
- 所以SAMBA每次启动至少都需要有这个daemon,而当我启动了SAMBA之后,主机系统就会启动137,138 这两个UDP
及139这个TCP端口。
1.6 Samba联机模式介绍
两种最常见的局域网的联机模式
peer/peer(对等模式)
domain model(主控模式)
1.6.1 peer/peer (workgroup model,对等模式)
使用 peer/peer 的架构的好处是每部计算机均可以独立运作,而不受他人的影响!不过, 缺点就是当整个网域内的所有人员都要进行数据分享时,光是知道所有计算机里面的账号与密码,就会很伤脑筋了! 所以, Peer/Peer 的架构是比较适合 :
小型的网域
没有需要常常进行档案数据分享的网络环境
每个使用者都独自拥有该计算机的拥有权
1.6.2 domain model(主控模式)
将所有的账号与密码都放置在一部主控计算机 (Primary Domain Controller, PDC) 上面,在我的网域里面,任何人想要使用任何计算机时,都需要在屏幕前方输入账号与密码,然后通通藉由 PDC 服务器的辨识后,才给予适当的权限。也就是说,不同的身份还具有不一样的计算机资源权限。
1.7 Samba的常见应用
Samba能做什么?
- 分享档案与打印机服务
- 可以提供用户登入Samba主机时的身份认证,以提供不同身份者的个别数据。
- 可以进行windows网络上的主机名解析
- 可以进行装置的分享
Samba服务器的应用实例: - 利用软件直接编修WWW主机上面的网页数据
- 用FTP修改,后上传;不方便,很有可能传上去旧版本的。
- 在线修改比较能迅速看到结果。
- 做成可直接联机的文件服务器
- 因为每个人登陆的账户名不同,这样对目录的权限也不同,实现权限控制。
二、部署
# 安装
yum -y install samba* #安装系列程序
samba-common //主要提供samba服务器的设置文件与设置文件语法检验程序testparm
samba-client //客户端软件,主要提供linux主机作为客户端时,所需要的工具指令集
samba-swat //基于https协议的samba服务器web配置界面
samba
//服务器端软件,主要提供samba服务器的守护程序,共享文档,日志的轮替,
开机默认选项Samba服务器安装完毕,会生成配置文件目录/etc/samba和其它一些samba
可执行命令工具,/etc/samba/smb.conf是samba的核心配置文件。
rpm -qa | grep samba #查看samba程序的安装情况
# 启动服务
systemctl start smb #启动服务
systemctl enable smb #使能服务
systemctl status smb #查看服务状态
# 防火墙要求(若未开启防火墙,则不需要做以下设置,可先查看防火墙是否开启)
getenforce #若结果为Disabled,则说明未开启防火墙
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
getenforce
需要为Permissive的状态才可以
# 操作系统普通用户(root) 转化为samba用户
id root #查看root用户信息
smbpasswd -a root #添加具有读写操作权限的root用户到samba服务中
pdbedit -L #查看samba服务允许的用户列表
温馨提示:
云服务器得开通139与445端口的安全组设置
三、访问
3.1Windows访问
第一步:控制面板,卸载程序,左上角打开或关闭windows功能,打开windows的smb功能。
之后需要重启计算机
第二步:添加网络映射
输入root账号与密码即可访问
3.2Linux访问
Linux挂载
sudo mkdir /release #建立保存远程服务器的文件夹
sudo mount -o username=uesr,password=password //ip/root /release/ #挂载操作