零、序言

早期可用 FTP 服务器软体进行 不同主机之间档案、资料的传送

但是!!

使用 FTP 传送档案却有一些问题:不能直接修改主机上面的档案和资料,即要修改时,要经过 下载—>修改—>重上传 的步骤。修改文件时每次都需要重复这三部分操作,比较繁琐。这种情况下,孕育而生的就是,实现 能在主机间直接修改文件的方法:NFS 与 CIFS。

NFS(Network File System),主用于 Unix Like 系统机器之间的文档传送。例如 Linux 以及其衍生系统。

CIFS(Common Internet File System),主用于 Microsoft Like 系统机器之间的文档传送。例如 Windows 的网络邻居。

但是,NFS 仅能满足 Unix Like 系统之间的机器沟通,CIFS 仅能满足 Microsoft Like 相关机器之间的机器沟通,若需要在 Unix Like 和 Microsoft Like 之间进行沟通时,这两种方法都不能满足需求了。因此需要一种能 相互分享档案、资料的跨平台文件系统。

基于上述的需求,利用封包侦测逆向工程,发展而成的 SMB Server,实现跨平台间文件直接访问的可能。

SMB(Server Message Block),用于 Unix Like 与 DOS System 互相分享资料。后来就称之为 SAMBA。

应用:

  1. 分享档案(文档)与打印机服务
  2. 提供使用者登入 SAMBA 主机时的身份认证,以提供不同身份者的个人资料,甚至可以提供非主机用户的权限
  3. 可以进行 Windows 网络上的主机名称解析(NetBIOS name)
  4. 可以进行装置的分享(例如Zip,CDROM…)

SAMBA 原理

底层协议

就如 NFS 系统是架构在 RPC Server 上面一样,SAMBA 这个文档系统是架构在 NetBIOS(Network Basic Input/Output System)这个通讯协议上的。最早 IBM 开发 NetBIOS 的目的仅是使区域网络内少数电脑进行网络连接的通讯协议,并不是针对大型网络,因此,这个 NetBIOS 是无法跨路由的(Router/Gateway)。因 NetBIOS 在区域网络上性能优越,所以 Microsoft 的网络架构就使用这种协议进行交互。可见,应用前景非常广泛,随即而来就是不满足 NetBIOS 无法跨路由的弊端,因此,为了使基于 NetBIOS 开发的服务器可以支持跨路由连接,就发展成了 NetBIOS over TCP/IP 技术。

基于 NetBIOS over TCP/IP 技术的支持,SAMBA 服务器就可以支持跨路由访问了,但是目前 SAMBA 还是比较广泛的使用在 LAN 里。

使用 deamons

NetBIOS 最初是定义在区域网络交互上的,没有如 TCP/IP 的协议,也就不可能使用 IP 地址的设定。

如此,要指定目标主机,就需要每台主机都要设置一个 NetBIOS 协议中定义的【NetBIOS Name】,之后的步骤:

1、取得对方主机的 NetBIOS Name,定位该主机:

要访问对方主机(Windows)文档时,必须加入该主机的群组(Workgroup),并且自己的主机也必须设定一个【NetBIOS Name】(HostName),在同一群组中,NetBIOS Name 必须为唯一。

2、利用对方给与的权限存取可用资源:

在找到对方主机后,能否操作资源还要验证对方主机是否有设置访问权限。

因此,理论上来说,使用 SAMBA Client 的 Linux 系统可以访问开启了共享的 Windows 系统共享文件夹!!!

一、简介

SAMBA 服务程序是一款基于 SMB 协议并由 服务端 和 客户端 组成的 开源文件共享软件,实现最常用的 Linux 系统与 Windows 系统之间的文件共享。SMB 是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内不同的计算机之间提供文件以及打印机等资源的共享服务。SMB协议 是 Server/Client 型协议。通过设置“NetBIOS over TCP/IP” 可跨路由使用 SAMBA 所提供的的服务。

SAMBA 的两个服务以及端口

  1. nmbd 主要利用 UDP 137 和 138 端口负责名称解析的服务;
  2. smbd 这个进程的主要功能是用来管理 SAMBA 主机分享的目录、文件和打印机等。利用 TCP 协议传输资料,使用 139 和 445 端口

SAMBA 包含的主要套件

  1. samba :这个套件主要包含 SAMBA 的 daemon 档案(smbd 及 nmbd)、SAMBA 的文件档(document)、以及其他与 SAMBA 相关的 logrotate 设定文件及开机预设选项档案等;
  2. samba-common :这个套件则主要提供了 SAMBA 的主要设定档(smb.conf)、smb.conf 语法检验的测试程序(testparm)等等;
  3. samba-client :这个套件则主要提供了当 Linux 系统作为 SAMBA Client 端时,所需要的工具指令,例如挂载 SAMBA 档案格式的执行档 smbmount 等等。

配置文件相关参数:

 

二、安装

1、CentOS 系统 yum 安装

sudo yum install -y samba

2、关闭 selinux 和 iptables 防火墙,或者添加规则进入防火墙中

关闭:

sudo systemctl stop iptables

sudo setenforce 0

或者将 /etc/selinux/config 下 SELINUX=enforcing 改为 SELINUX=disabled

3、修改配置文件并添加系统用户并将用户 添加到 SAMBA 用户数据库中

samba global

 

 

 

 

 

三、设置

设置samba访问用户

在Linux中,创建的SSH访问用户不等于在samba里面就有访问权限,需要用pdbedit(这是Samba的用户管理命令)添加可以访问Samba服务器的权限用户。

常用的参数:

另一个可以管理用户的samba管理命令是smbpasswd(属于Samba套件,能够实现添加或删除samba用户和为其修改密码,但是不能查看所有用户)。

设置samba共享文件

设置好可以访问samba文件服务器的访问用户后,就可以设置共享文件了。具体设置参数可参照第一部分的参数列表。

四、访问

1、Windows 访问

在文件管理器的地址栏上填写:\\服务器IP\共享文件名

也可以通过磁盘映射,将共享的文件夹以磁盘的形式访问,更加方便。

2、Linux 访问

访问前需要安装一些依赖和软件

1)在客户端安装 cifs-utils 软件包

2)创建挂载目录,并且进行挂载